[英]Port from $.ajax to javascript 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');
}
});
我嘗試過類似的東西,但我看不到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');
}
嘗試這個
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
問題是XHR沒有響應加載事件。 它響應onreadystatechange
:
request.onreadystatechange = function(){
if (request.readyState == 4 && (request.status >= 200 && request.status < 300)) {
successCallback();
}
}
來自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.