XMLHttpRequest何时销毁?
我刚刚编写了下面的简单函数,xmlhttp
已成功发送,但responseText
未发送到函数SetStringinDiv()
。变量str
为空,变量location
具有值。
我不知道如何修复它,我也不知道这个问题的关键字是什么。如果此类问题已存在,请告诉我如何找到它或关键字是什么。
<script>
function foo(){
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var str = xmlhttp.responseText;
SetStringinDiv("div1", str);
}
}
xmlhttp.open("GET", "uri", true);
xmlhttp.send();
}
</script>
<script>
function SetStringinDiv(location, str) {
document.getElementById("location").innerHTML = location;
document.getElementById("str").innerHTML = str;
if (document.getElementByID(location) == null) {
document.getElementById("error").innerHTML += ">> error, can not find the div, "
+ location + "\n";
}
document.getElementByID(location).innerHTML = str;
}
</script>
答案 0 :(得分:0)
检查xmlhttp.status!= 200并打印出错误。打印每次调用onreadystatechange时的readystate和status。我想你会在statusText中看到一条错误信息。
现在建议不要使用onreadystatechange回调。我使用下面的代码。请注意,如果服务器没有响应,并且没有关闭您的请求在超过一段时间(2-5分钟)内超时的连接 - 无论是在您的代码中还是在下面。如果它坐在那里,请关闭服务器。您将立即得到错误响应。
var req = new XMLHttpRequest(),
done = function(response) {
callback(cache[uri.split('/').pop()] = cache[uri] = response);
};
req.open("GET", uri + ".lispz", true);
req.onerror = function(err) {
done({
uri: uri,
error: err
});
}
req.onload = function() {
return (req.status != 200) ? req.onerror(req.statusText) : done(run(req.responseText));
};
req.send();