jQuery $.ajax() 函数的错误信息源

Posted

技术标签:

【中文标题】jQuery $.ajax() 函数的错误信息源【英文标题】:jQuery $.ajax() function's error message source 【发布时间】:2011-01-07 23:24:16 【问题描述】:

在失败的情况下,代码如下:

error: function(msg)

msg 来自哪里?

编辑:

我正在使用这个函数 ($ajax) 来调用 WEB SERVICE。因此,如果投票否决的人可以向我解释味精的来源,那就太好了!我在网络服务中设置它吗?如果是这样,怎么做?请不要复制和粘贴定义。

【问题讨论】:

为什么会被否决? 参数 msg 是用于发出请求的 XMLHttpRequest 对象 jquery。它是否被称为 msgxhr 或其他什么都没关系,这就是第一个(或唯一一个)参数。在你得到它的例子中,他们应该使用 xhr 或除 msg 之外的其他东西,这令人困惑。我建议你改变它。是的,我不知道为什么投反对票。这是个好问题。我什至会在这里投反对票。 . . 【参考方案1】:

消息是您在 ajax 调用中查询的实际服务器端函数的返回值。

这样您就可以获得错误或任何其他关于服务器端代码是否完成了它应该做的事情的信息。

说如果你返回一个字符串“成功”

msg.val() 将等于“成功”

希望对你有帮助

【讨论】:

【参考方案2】:

ajax 返回变量(在本例中为“msg”)是从 AJAX 调用返回的输出 - 在 ajax 错误的情况下,这可能是服务器错误。

【讨论】:

【参考方案3】:

来自 jquery 文档:

error(XMLHttpRequest, textStatus, errorThrown) Function

请求失败时调用的函数。该函数传递了三个参数: - XMLHttpRequest 对象, - 描述发生的错误类型的字符串,以及 - 一个可选的异常对象,如果发生了。 第二个参数的可能值(除了 null)是“timeout”、“error”、“notmodified”和“parsererror”。这是一个 Ajax 事件。

当您只指定一个参数时,它将是xmlHttpRequestObject。你可以从中得到一些很好的信息。遗憾的是,大多数文档都没有让您正确设置。一个好的默认模板是:

error:function (xhRequest, errorText, thrownError)

您可以从 xhRequest 获得一些有用的信息:

.status:404:“未找到”,500:“服务器错误”。这有时会很有帮助。 .responseText 是来自服务器的信息,在出现错误时通常无用,但有时会有所帮助。

第二个值,一个字符串,有时很有帮助。啊,我猜文档中提到了可能的值。

第三个参数,无论何时我检查它,一直是未定义的。我不认为它有用。

【讨论】:

【参考方案4】:

其实正确的做法是:

error: function(req, status, error) 

来自 jQuery API:

一个函数 如果请求失败则调用。这 函数传递了三个参数: XMLHttpRequest 对象,一个字符串 描述错误的类型 发生和一个可选的异常 对象,如果发生了。可能的 第二个参数的值 (除了空)是“超时”,“错误”, “未修改”和“解析器错误”。这 是一个 Ajax 事件。

【讨论】:

【参考方案5】:

我认为错误回调函数中的第三个参数errorThrown

 error(XMLHttpRequest, textStatus, errorThrown)

正是从服务器发送文本错误消息。

所以如果在你设置的服务器上:

 Response.Status = 403;
 Response.StatusDescription = "Password is not correct";

在您获得的客户上:

 textStatus => "error",
 errorThrown => "Password is not correct"

Asp.net MVC 的服务器部分将是:

 return new HttpStatusCodeResult(403, "Password is not correct");

【讨论】:

以上是关于jQuery $.ajax() 函数的错误信息源的主要内容,如果未能解决你的问题,请参考以下文章

如何 jQuery Ajax 错误捕获和报告

jQuery+ajax文件上传失败,啥原因

jQuery---ajax---error函数及其参数详解

jquery ajax 将404错误提示给客户端

在ajax函数中隐藏jquery元素

jQuery之ajax错误调试分析