1

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

4

3 回答 3

2

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

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

代码解释:

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

Notmodified:将浏览器的缓存版本与服务器的版本进行比较。如果它们相同,则服务器以 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);
            }
        }
    });
});

来源:博客文章 - jQuery 错误处理

于 2013-06-19T10:08:50.417 回答
1

成功

响应代码介于 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 对象,其中包含它自己的成功/错误标志,那么任何错误都可以通过查看标志来处理。

于 2013-06-19T10:14:14.440 回答
0

我所知道的

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

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

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

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

于 2013-06-19T10:02:32.870 回答