没有什么能让我像网页开发一样令人沮丧,幸运的是我不经常做,这就是为什么。以下代码在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>
答案 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);