0

没有什么比 Web 开发更让我感到沮丧的了,幸运的是我不经常这样做,这里有一个例子。alert("2")以下代码在 DreamWeaver Live View 中运行良好,在 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 回答