有人可以解释为什么当连接良好时这不能正常工作吗?如果我断开连接,则可以正常运行,但是,如果我仍然保持连接,则仍显示if和else响应。
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("inventory-info-details").innerHTML=xmlhttp.responseText;
$('.loader').toggleClass('load-complete');
$('.checkmark').toggleClass('checkmarkShow');
$("#tableDiv").load("inventoryList_printOut.php");
}
else
{
$("#loadError").css( "display", "block" );
$("#inventory-info-details").css( "display", "none" );
}
};
答案 0 :(得分:0)
使用XMLHttpRequest
时,.onreadystatechange
是事件处理程序,每次更改readyState
时都会调用该事件处理程序。其中有五个(source):
使用new XMLHttpRequest()
时,readyState
为0。在此过程中(例如,使用.open(...)
,.send(...)
时),readyState
的值会更改。对于每次更改,正在执行分配给.onreadystatechange
的功能。
在此过程中,它将评估以下条件。
if (xmlhttp.readyState==4 && xmlhttp.status==200)
由于readyState尚未达到DONE
状态(值4),因此上述条件为false。因此,else
块正在执行。如果您想防止这种情况发生(换句话说,只有在请求完成后才执行操作),请使用以下方法:
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200) {
// handle on success
}
else {
// handle error situation
}
}