试着在REST中使用javascript

时间:2013-03-11 05:52:56

标签: javascript json web-services

没有什么能让我像网页开发一样令人沮丧,幸运的是我不经常做,这就是为什么。以下代码在DreamWeaver Live View中是否完全正常,在alert("2")之后停止(警报3从未出现,在输出中没有任何内容)在Chrome上停止并且在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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

旁注

  

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

使用ajax使用同步连接是一个坏主意。它将冻结您的UI代码。

这就是为什么永远不会调用alert(3)的原因。执行xhr.send()时,线程会停止并等待服务器的响应。

执行此操作的理想方法是client.open("GET", url, true);