Create xhrCallbacks Ajax call + JQuery



我想使用 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();

最新更新