Javascript 表单提交后可能的HTTP请求状态
我正在尝试使用AJAX提交表单并在页面中获得结果。我在Submit上调用一个JS函数,该函数进行AJAX调用,并包含以下代码:Javascript 表单提交后可能的HTTP请求状态,javascript,jquery,ajax,forms,http,Javascript,Jquery,Ajax,Forms,Http,我正在尝试使用AJAX提交表单并在页面中获得结果。我在Submit上调用一个JS函数,该函数进行AJAX调用,并包含以下代码: request=new XMLHttpRequest(); /* set up request here */ request.onreadystatechange=function() { if (request.readyState == 4 && request.status == 2
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次),所以我想在成功警报出现之前会出现很多不同的状态?我如何检查我得到了哪些,以及当提交失败时会发生什么?谢谢。你只能获得一种身份,但你可以获得 检查
readyState
是否为4
或0
(因为这两种状态中的任何一种都表明没有更多的响应等待)
如果是0
,则抛出错误;如果是4
,则测试状态
如果readyState是任何其他值,则忽略它(除非您想在其他状态下执行操作)。请求经过四个阶段。readyStates。每次readystate更新时,它都会触发事件<代码>0
表示失败,4
表示请求已完成。状态
返回http代码<代码>200表示成功。有一个答案,它返回了一个请求主体。所有其他代码都表明服务器端有问题。404、403或500。您可以安全地忽略其他readystate
。但是,如果服务器端表单验证失败,并且它返回表单并显示错误消息,那么我是否仍会获得200状态?是的,200仅表示请求返回了有效响应。除非表单验证(读取:服务器端脚本)返回不同的头。当有人试图访问受权限限制的页面时,我的php脚本返回403头。因此,要确定验证是否失败,我需要更改服务器脚本中的头(我使用Zend Form),或者是否有其他方法从我的JS中找到它?不,我不是这么说的。Zend返回HTML不是吗?是的,但我不知道如果验证失败,它是否已经更改了头。只有当表单通过了服务器端验证时,我才需要显示成功警报,因此,如果在验证失败时仍然得到200状态,那么检查200状态是不够的。