我想使用 JQuery 库进行我的异步 ajax 调用,而不是我创建的异步 ajax 调用,如果同时进行不同的调用,则会泄漏。(除了 JQuery 之外,您还建议使用其他库来达到此目的吗?
我目前的挑战是让它在我们的IE8开发环境中工作。它适用于Firefox,但不适用于IE8。问题是我需要使用特定的ActiveXObject - Msxml2.ServerXMLHTTP在我们的环境中工作。那么,我如何告诉JQuery创建这个特定的ActiveXObject而不是默认的呢?谢谢
到目前为止(这在火狐中有效):
var request = $.ajax({
url: "http://mkapacs.com/SimulateUser.php",
cache: false,
type: "GET",
timeout: 14000,
crossDomain: true,
data: {screen: "901", state: "000", trans: "cwd"},
dataType: "xml"
});
request.done(function(msg) {
var fdk="",eppKey="",uInput="";
var xml = msg;
try{
fdk = xml.documentElement.getElementsByTagName("fdk")[0].firstChild.nodeValue;
eppKey = xml.documentElement.getElementsByTagName("eppKey")[0].firstChild.nodeValue;
uInput = xml.documentElement.getElementsByTagName("user_input")[0].firstChild.nodeValue;
//alert('userInput: ' + uInput + ';eppKey: ' + eppKey + ';fdk: ' + fdk);
}catch(er){
alert('error occured while parsing XML for fdk.Error:' + er.message);
}
document.getElementById("ajaxResponse").innerHTML='fdk: ' + fdk + '; eppKey: ' + eppKey + '; uInput: ' + uInput;
//alert('done: ' + msg);
$("#log").html( msg );
});
request.fail(function(jqXHR, textStatus) {
/*for (property in jqXHR) {
alert(jqXHR[property].value);
}*/
alert( "Request failed: " + typeof(jqXHR) + textStatus );
});
您可以使用 jQuery 的.ajax()
选项来传递所需的特定 XHR 对象:
var request = $.ajax({
xhr: new window.ActiveXObject( "Msxml2.ServerXMLHTTP" ),
url: "http://mkapacs.com/SimulateUser.php",
cache: false,
type: "GET",
timeout: 14000,
crossDomain: true,
data: {screen: "901", state: "000", trans: "cwd"},
dataType: "xml"
});
(当然,这只适用于IE)。
此外,如果你坚持使用jQuery,你可以简化代码的其他部分。例如,此行:
fdk = xml.documentElement.getElementsByTagName("fdk")[0].firstChild.nodeValue;
可以变得简单
fdk = $(msg).find('fdk').text();