Javascript:XMLHttpRequest任务切换
问题描述:
document.getElementById('contactButton').value = "Sending";
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
function stateChanged(){
if (xmlhttp.readyState==4) {
var response = xmlhttp.responseText;
if(response == "true"){
document.getElementById('contactButton').value = "Sent :)";
}
}
运行此javascript时,contactButton
永远不会设置为“正在发送...”。它挂起一秒钟,然后更改为“发送:)”。Javascript:XMLHttpRequest任务切换
我不确定JavaScript的处理顺序,但它似乎需要某种任务切换来处理XMLHttpRequest()
。
这显然是一个缩写代码,但我在xmlhttp
之前尝试做的其他几个javascript/css事情。好像xmlhttp
只是在发送请求时接管。
任何想法?
答
您传递false以打开,所以它同步运行。这意味着它不使用readyState,而是延迟直到请求完成。如果你想要做同步,它应该是:
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
if(xmlhttp.status == 200)
{
var response = xmlhttp.responseText;
document.getElementById('contactButton').value = "Sent :)";
}
你应该改变,以异步避免挂你的脚本,你可能会发现它更容易使用JavaScript库。
好眼睛!谢谢。 – 2010-02-17 05:52:53