0

JQuery ライブラリを使用して、非同期の ajax 呼び出しを作成したいのですが、同時に別の呼び出しを行った場合にリークが発生します。(この目的を果たすために提案する JQuery 以外のライブラリはありますか?)。

私の現在の課題は、IE8 を使用して開発環境で動作させることです。Firefox では動作しますが、IE8 では動作しません。問題は、私たちの環境で動作するために、特定の ActiveXObject - Msxml2.ServerXMLHTTP を使用する必要があることです。では、デフォルトの ActiveXObject ではなく、この特定の ActiveXObject を作成するように JQuery に指示するにはどうすればよいでしょうか? ありがとうございました

これまでのところ (これは 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 に答える