0

私は奇妙な振る舞いをしています。以下は私のページへのjqueryajax呼び出しです。

実際、私のページがロードされているとき、両方のドロップダウンに対してajaxリクエストの下を呼び出す場所から2つのドロップダウンがあるため、同じページへの2つの呼び出しがあります。

  //alert("Test");
    var serviceReq = "http://localhost:2853/jsonproxy/jsonprxy.aspx"; 
    $.ajax({
        url: serviceReq,
        //type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        jsonpCallback: "airportXML",
        cache: true,
        success: function(data, textStatus, jqXHR) {
            var xmlDoc = $.parseXML(data);
            //alert("data" + data);
            x = xmlDoc.documentElement.childNodes;
            for (i = 0; i < x.length; i++) {
                document.write(x[i].nodeName);                        
                document.write("<br />");
            }

            //alert(oData);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(textStatus + "---" + errorThrown);
        }
    });

問題は、それが成功することは決してないので、この// alert( "data" + data);を取得しないことです。「parsererror:airportxmlは関数ではありません」というエラーが常に発生し、返される応答が完全なJSONであることを保証できます。

この行にコメントすると、奇妙な動作が発生しますjsonpCallback: "airportXML"、Jqueryはデフォルトのコールバック、つまりjquery12121212_2323232を提供し、すべてが正常に機能します。

もう1つ奇妙なことに、この呼び出しの前にアラート(// alert( "Test");)を設定すると、jsonpCallback: "airportXML"にコメントしなくても、すべてが完璧に機能し、成功アラートが正常に表示されます。

私の電話はフルタイムで完了していないと思います。

提案してください!!

4

1 に答える 1

0

私は上記の問題を解決すると思います、私は使用する必要があります

async: false,私の最初の呼び出しのために、私の次の呼び出しが完了するように。

これについて提案してください。

編集:JSNOPクロスドメイン呼び出しはsysncronous呼び出しを許可しますか?

ありがとう。

于 2012-05-23T05:11:03.173 に答える