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

Possible HTTP Request states after form submit

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

您只能获得一种状态,但您会获得 multiple states

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

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

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

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