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

时间:2010-01-21 22:16:29

标签: jquery ajax error-handling

在失败的情况下,代码类似于:

error: function(msg)

msg来自哪里?

编辑:

我正在使用此功能($ ajax)来调用WEB SERVICE。因此,如果投票给谁的人可以向我解释msg来自哪里会很棒!我是否在Web服务中设置它?如果是这样,怎么样?请不要复制和粘贴定义。

5 个答案:

答案 0 :(得分:20)

来自jquery文档:

  

error(XMLHttpRequest, textStatus, errorThrown) Function

     

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

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

error:function (xhRequest, errorText, thrownError)

您可以从xhRequest获得的一些好消息是:

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

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

第三个参数,每当我检查出来时,一直都是未定义的。我不认为它有用。

答案 1 :(得分:7)

我认为错误回调函数中的第3个参数 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");

答案 2 :(得分:2)

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

通过这种方式,您可以获得有关服务器端代码是否执行了预期操作的错误或任何其他信息。

假设您返回字符串“success”

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

希望有所帮助

答案 3 :(得分:0)

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

答案 4 :(得分:0)

实际上,正确的方法是:

error: function(req, status, error) {
}

来自jQuery API:

  

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