0

我想使用 JQuery 库来进行异步 ajax 调用,而不是在同时进行不同调用时创建泄漏。(您建议使用除 JQuery 之外的任何替代库来实现此目的吗?)。

我目前的挑战是让它在我们的开发环境中使用 IE8 工作。它适用于 Firefox,但不适用于 IE8。问题是我需要使用特定的 ActiveXObject - Msxml2.ServerXMLHTTP 在我们的环境中工作。那么,我如何告诉 JQuery 创建这个特定的 ActiveXObject 而不是默认的呢?谢谢你

到目前为止(这在 Firefox 中有效):

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 );
    });
4

1 回答 1

1

您可以使用 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();
于 2012-04-27T16:38:41.677 回答