ajax或post请求的状态

时间:2013-06-19 09:56:00

标签: ajax jquery httpresponse

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页面的帖子请求是否已成功发送,如果出现问题,还会向用户发出警告?

任何人都可以清楚地向我解释这一点。任何帮助都非常感激

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

据我所知

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

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

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

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

答案 2 :(得分:0)

<强>成功

响应代码介于200-299之间,或者是304 Not Modified。

未修改

响应代码是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对象,则可以通过查看该标志来处理任何错误。