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

sar*_*ake 21 ajax error-handling jquery

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

error: function(msg)
Run Code Online (Sandbox Code Playgroud)

msg来自哪里?

编辑:

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

Pat*_*her 20

从jquery文档:

error(XMLHttpRequest, textStatus, errorThrown) Function

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

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

error:function (xhRequest, errorText, thrownError)
Run Code Online (Sandbox Code Playgroud)

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

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

第二个值,一个字符串,有时是有用的.啊,我想文档中提到了可能的值.

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


Vla*_*kin 7

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

 error(XMLHttpRequest, textStatus, errorThrown)
Run Code Online (Sandbox Code Playgroud)

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

因此,如果您在服务器上设置:

 Response.Status = 403;
 Response.StatusDescription = "Password is not correct";
Run Code Online (Sandbox Code Playgroud)

在你得到的客户端上:

 textStatus => "error",
 errorThrown => "Password is not correct"
Run Code Online (Sandbox Code Playgroud)

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

 return new HttpStatusCodeResult(403, "Password is not correct");
Run Code Online (Sandbox Code Playgroud)


sdm*_*ler 2

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

这样您就可以获得错误或有关服务器端代码是否执行其应执行的操作的任何其他信息。

假设你返回一个字符串“success”

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

希望有帮助