0

Web 開発ほどイライラさせられるものはありません。幸運なことに、頻繁にやることはありません。その理由の例を次に示します。次のコードが DreamWeaver ライブ ビューで完全に正常に動作alert("2")し、Chrome では (アラート 3 が表示されず、出力にも何も表示されず) 後に停止し、Internet Explorer ではまったく動作しない理由はありますか?

<script type="text/javascript">
    function getStuff() {
        var url = "http://url/to/restful/api";              

        alert("1");     
        var client = new XMLHttpRequest();              
        client.open("GET", url, false);

        client.setRequestHeader("Content-Type", "application/json");
        alert("2")

        client.send();  
        alert("3")              

        document.getElementById("output").value = client.responseText; 
    }    
</script>

これは次のように呼び出されます。

<button onClick="getStuff()">GET</button>
4

2 に答える 2

1

次のコードを試してください: このリンクを参照してくださいhttp://en.wikipedia.org/wiki/XMLHttpRequest

<script type="text/javascript">
    function getStuff() {
        var url = "http://url/to/restful/api";              

        alert("1");     
        var client = getXMLHttpRequestObject();              
        client.open("GET", url, false);

        client.onreadystatechange = function() {
          if(client.readyState == 4){
                  document.getElementById("output").value = client.responseText;
            }
        };

        client.setRequestHeader("Content-Type", "application/json");
        alert("2")

        client.send();  
        alert("3")              


    }    

function getXMLHttpRequestObject() {
    var ref = null;
    if (window.XMLHttpRequest) {
        ref = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // Older IE.
        ref = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    }
    return ref;
}
</script>
于 2013-03-11T06:10:37.877 に答える
0

サイドノート

client.open("GET", url, false);

ajaxを使用して同期接続を使用することは悪い考えです。UIコードがフリーズします。

これが、alert(3)が呼び出されない理由です。xhr.send()を実行すると、スレッドは停止し、サーバーからの応答を待ちます。

これを行うための理想的な方法はclient.open("GET", url, true);

于 2013-03-11T06:17:47.707 に答える