Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表单提交后可能的HTTP请求状态_Javascript_Jquery_Ajax_Forms_Http - Fatal编程技术网

Javascript 表单提交后可能的HTTP请求状态

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

我正在尝试使用AJAX提交表单并在页面中获得结果。我在Submit上调用一个JS函数,该函数进行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次),所以我想在成功警报出现之前会出现很多不同的状态?我如何检查我得到了哪些,以及当提交失败时会发生什么?谢谢。

你只能获得一种身份,但你可以获得

检查
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状态是不够的。