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

时间:2015-02-08 11:20:15

标签: javascript jquery ajax forms http

我试图提交表单并使用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次),所以我想我在成功之前获得了许多不同的状态?如何检查我得到的是什么,以及提交失败时会发生什么?感谢。

2 个答案:

答案 0 :(得分:1)

您只获得一个状态,但获得multiple states

检查readyState4还是0(因为这些状态中的任何一个都表示没有更多的响应等待)。

如果是0则抛出错误,如果是status则测试4

如果readyState是任何其他值,则忽略它(除非您想在其他状态下执行操作)。

答案 1 :(得分:1)

请求分为四个阶段。 readyStates。每次状态更新时,它都会触发事件。 0表示失败,4表示请求已完成。 status返回http代码。 200表示成功。有一个答案,它返回了一个请求正文。所有其他代码表明服务器端出现了问题。例如。 404,403或500.您可以安全地忽略其他readystates。但是除了200以外的任何状态都是失败的。