将原型 Ajax POST 重建为 "plain" js

rebuild prototype Ajax POST into "plain" js

我需要的是通过 javascript 重建 prototype.js Ajax 请求。 (没有 jQuery / 没有获取)。需要 IE 支持(出于某些原因...)

new Ajax.Request(
urlVar,
{
  method: 'post',
  parameters: {elid: document.getElementById('element').selectedIndex},
  onCreate: function(){
    //do somethings
  },
  onComplete: fucnction (event){
    currentValues = eval('(' + event.responseText + ')');
    console.log(currentValues); // will give me an array with 3 objects
  }
});

我试过的是:

var xhr = new XMLHttpRequest();
xhr.open("POST", urlVar, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function (event) {
   if (xhr.readyState == 4) {
      if (xhr.status == 200) {
         currentValues = eval('(' + event.responseText + ')');
         console.log(currentValues); // i see an error that "currentValues" is undefined
         //i can get 1 object if i will do eval('(' + THIS.responseText + ')');
         // but it still bugs me a lot..

         //other actions here
      }
      else if (xhr.status == 400) {
         console.log('ERROR')
      }
      else {
         console.log('something else other than 200 was returned');
      }
   }
}
xhr.send(document.getElementById('element').selectedIndex);

也许有人知道在这种情况下哪种构造会起作用。 有什么方法可以通过 js 执行 onCreate / onComplete 吗?

使用 this.responseTextxhr.responseText(与您已经访问 .status.readyState 的方式相同)或 event.target.responseTextevent 本身没有 responseText