简体   繁体   English

从$ .ajax到javascript XMLHttpRequest的端口?

[英]Port from $.ajax to javascript XMLHttpRequest?

Looking for some help to convert the following from jquery ajax to javascript using XMLHttpRequest? 寻找一些帮助,使用XMLHttpRequest将以下内容从jquery ajax转换为javascript?

$.ajax({
    url: 'api/dev/blah?id=4F',        
    type: 'GET',
    beforeSend: function(req) {
        req.setRequestHeader("Accept", "application/xml");
    },
    success: function (result) {
        alert('success');
        // Parse xml here...
    },
    error: function() { 
        alert('error');
}
});

I've tried something similar to this but i can't see a request sent in fiddler, implied no response or errors (not xmlhttprequest savvy): 我尝试过类似的东西,但我看不到fiddler发送的请求,暗示没有响应或错误(不是xmlhttprequest精明):

function junk() {
  var request = new XMLHttpRequest();
   request.addEventListener('load', successCallback, false);

   request.open("GET", 'api/dev/blah?id=4F', true);
   request.setRequestHeader("Accept","application/xml");
   request.setRequestHeader("Content-Type", "application/xml");
   request.send();
}

function successCallback(data) {
  alert('success');
}

Try this 尝试这个

 request.onreadystatechange = callBackfunction();
 request.send(null);

..... .....

 function callBackfunction()
 {

  if(request.readyState == 4)   
  {
     //alert(request.responseText)
     if(request.status == 200)
      {     
          var xmlDoc = request.responseXML;
      var root = xmlDoc.documentElement;
      var nodesList = root.childNodes; 
      nodeListLen = nodesList.length;

    }// end of if(xmlRequest.status==200)

   } // end of if(xmlRequest.readyState==4)

  } // end of callBackfunction

The issue is that XHR doesn't respond with a load event. 问题是XHR没有响应加载事件。 It responds with onreadystatechange : 它响应onreadystatechange

request.onreadystatechange = function(){
    if (request.readyState == 4 && (request.status >= 200 && request.status < 300)) {
        successCallback();
    }
}

From Eloquent JavaScript - chapter 14 : 来自Eloquent JavaScript - 第14章

function makeHttpObject() {
  try {return new XMLHttpRequest();}
  catch (error) {}
  try {return new ActiveXObject("Msxml2.XMLHTTP");}
  catch (error) {}
  try {return new ActiveXObject("Microsoft.XMLHTTP");}
  catch (error) {}

  throw new Error("Could not create HTTP request object.");
}

var request = makeHttpObject();
request.open("GET", "api/dev/blah?id=4F", true);
request.setRequestHeader("Accept", "application/xml");
request.setRequestHeader("Content-Type", "application/xml");
request.send(null);
request.onreadystatechange = function() {
    if (request.readyState==4 && request.status==200) {
        console.debug(request.responseText);
    }
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM