【问题标题】:Status of ajax or post requestajax 或 post 请求的状态
【发布时间】:2013-06-19 09:55:59
【问题描述】:

status - 包含请求的状态,如

("success", "notmodified", "error", "timeout", or "parsererror") /ajax or post

我知道这里的success,not modified,error 是什么意思,但我不知道如何处理这个错误。如果回调成功则更新我的 div,如果有任何错误not modified, error, time out, parse error 然后让我提醒弹出一些错误。

每种错误的原因是什么?我的意思是not modified,timeout,error and parseerror 发生的情况。

如果结果为success,是否意味着我的发帖请求已经成功?

我的本​​地服务器 xampp 从未出现任何错误,状态始终为成功。我想,因为它仅限于我的系统,但是当我将我的网站上线时,存在一些问题,例如服务器上的流量。

那么我如何确定我对某个 sample.php 页面的发布请求是否已成功发送,如果出现问题,是否会向用户弹出警报?

【问题讨论】:

    标签: ajax jquery httpresponse


    【解决方案1】:

    错误类型有点不言自明。它们只是为您提供一个字符串来轻松处理不同的错误。

    如果请求失败,则会调用错误回调选项。它接收 jqXHR、一个指示错误类型的字符串和一个异常对象(如果适用)。一些内置错误会提供一个字符串作为异常对象:“abort”、“timeout”、“No Transport”。 Source: jQuery.Ajax documentation

    代码解释:

    错误:任何 HTTP 响应代码,例如众所周知的 404(未找到)或其他内部服务器错误。

    未修改:将浏览器的缓存版本与服务器的版本进行比较。如果它们相同,则服务器以 304 响应

    超时: Ajax 请求是有时间限制的,因此可以捕获和处理错误以提供更好的用户体验。请求超时通常要么保留其默认值,要么使用 $.ajaxSetup() 设置为全局默认值,而不是使用 timeout 选项覆盖特定请求。

    解析错误:无法解析jQuery数据(JSON)(通常是由于语法错误)

    处理这些错误代码: 这是处理错误的一些示例

      $(function() {
        $.ajaxSetup({
            error: function(jqXHR, exception) {
                if (jqXHR.status === 0) {
                    alert('Not connect.\n Verify Network.');
                } else if (jqXHR.status == 404) {
                    alert('Requested page not found. [404]');
                } else if (jqXHR.status == 500) {
                    alert('Internal Server Error [500].');
                } else if (exception === 'parsererror') {
                    alert('Requested JSON parse failed.');
                } else if (exception === 'timeout') {
                    alert('Time out error.');
                } else if (exception === 'abort') {
                    alert('Ajax request aborted.');
                } else {
                    alert('Uncaught Error.\n' + jqXHR.responseText);
                }
            }
        });
    });
    

    Source: Blog Post - jQuery Error Handling

    【讨论】:

      【解决方案2】:

      成功

      响应代码介于 200-299 之间或 304 未修改。

      未修改

      响应码是 304。如果你使用缓存,浏览器可以告诉服务器它当前有哪个版本,服务器将它与它的版本进行比较,如果没有变化,它可以发送一个 304 Not Modified 响应,向客户表明他们的版本是最新的。在 jQuery ajax 中,304 Not Modified 响应仍会触发 success 处理程序。

      错误

      响应代码介于 400-599 之间。这可能是例如 404 未找到、403 禁止、500 内部服务器错误等。

      解析错误

      这是一个 jQuery 内部,实际上不是 HTTP 响应。如果 jQuery 试图解析格式无效或存在语法错误的 JSON 或 XML,就会发生这种情况。

      超时

      同样,这不是 HTTP 响应。 ajax 请求有一个超时时间,如果在服务器响应之前超时,将中止请求。


      如果您控制服务器端,在您的示例中是一个 PHP 脚本,并且您从不使用 header() 更改响应代码,那么您的 ajax 将始终收到 200 OK 响应,除非 PHP 中有未处理的异常将触发500 内部服务器错误。

      始终发送200 OK 响应代码是可以接受的。例如,如果服务器输出一个 JSON 对象,其中包含自己的成功/错误标志,那么任何错误都可以通过查看标志来处理。

      【讨论】:

        【解决方案3】:

        据我所知

        未修改:服务器发送未修改 (304) 响应状态

        超时:服务器在超时属性指定的时间段内没有响应

        错误:服务器响应错误状态为 4xx 或 5xx

        parseerror:处理服务器响应时出现客户端错误,例如无效的 json 格式/xml 格式

        【讨论】:

          猜你喜欢
          • 2017-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-20
          • 2011-03-10
          • 1970-01-01
          • 1970-01-01
          • 2019-03-13
          相关资源
          最近更新 更多