我试图提交表单并使用AJAX获取结果。我调用一个JS函数onsubmit进行AJAX调用,并包含以下代码:
request=new XMLHttpRequest();
/* set up request here */
request.onreadystatechange=function() {
if (request.readyState == 4 && request.status == 200) {
/* do what I need */
alert('Success');
} else {
/* do what I need */
alert('Failed');
}
}
但是,失败的警报会在成功警报之前多次出现(至少3次),所以我想我在成功之前获得了许多不同的状态?如何检查我得到的是什么,以及提交失败时会发生什么?感谢。
答案 0 :(得分:1)
您只获得一个状态,但获得multiple states。
检查readyState
是4
还是0
(因为这些状态中的任何一个都表示没有更多的响应等待)。
如果是0
则抛出错误,如果是status
则测试4
。
如果readyState
是任何其他值,则忽略它(除非您想在其他状态下执行操作)。
答案 1 :(得分:1)
请求分为四个阶段。 readyStates。每次状态更新时,它都会触发事件。 0
表示失败,4
表示请求已完成。 status
返回http代码。 200
表示成功。有一个答案,它返回了一个请求正文。所有其他代码表明服务器端出现了问题。例如。 404,403或500.您可以安全地忽略其他readystates
。但是除了200以外的任何状态都是失败的。