我一直在网上(显然在错误的地方)查找ajax(jquery post)用途的成功和失败标准。
例如,假设我使用ajax发布到php脚本。该脚本可以返回:
何时将这些返回值转换为成功并何时失败?
您可能已经知道$ .ajax()支持beforeSend,成功,错误和完整回调。
那么在成功的情况下我的脚本应该发送什么,以及在触发适当的回调失败的情况下。
答案 0 :(得分:5)
Ben是对的,但我会扩展一点。
jQuery根据被调用页面的HTTP响应代码确定成功或失败。请注意, 与发回的响应中的内容相同。
举个例子,假设您的PHP脚本位于http://url.com/script.php
当用户点击该网站时,他们将从服务器获得响应。该响应可以是JSON对象,它可以是HTML页面,也可以是空响应。 在所有这些情况下,响应代码可能是200. 200响应代码意味着服务器理解请求,接受请求并发送回来。
现在让我们假设用户试图点击http://url.com/notascript.php
服务器不知道该怎么做(假设notascript.php
实际上不存在)。它未通过请求,并发回响应 - 可能是响应代码404(或4xx范围内的其他内容)。
因此,如果你知道实际的URL,那么如何调用jQuery的错误处理程序?
好吧,假设您的AJAX调用正在尝试加载博客帖子,并尝试拨打这样的电话:http://url.com/post?id=5
。如果您的PHP脚本确定没有ID为5的博客条目,那么您可能不应该发回成功的响应。相反,4xx响应更合适。 PHP有一个内置函数:
<?php
http_response_code(404);
?>
现在,响应将被jQuery读取为失败,并将调用错误处理程序。
进一步阅读:
RFC2616,定义HTTP响应代码
答案 1 :(得分:2)
我相信它基于标题代码(即200 - 成功)。您可以发回自己的特殊错误,例如How to receive error in jQuery AJAX response?
如果您要求的页面中的代码出现问题,则不应该出现Ajax错误。就Ajax而言,只要成功请求页面,就可以正常执行。请求页面中的任何错误都不是Ajax的错误,因此在成功加载该页面后,应由代码处理。使用上面链接中的自定义标题可以让您更轻松地完成此操作。
Ajax请求页面 - &gt;页面加载&amp;没有错误 - &gt;页面请求成功 - &gt;您执行结果错误检查
VS
Ajax请求页面 - &gt;页面加载&amp;有错误 - &gt;页面请求成功 - &gt;您执行结果错误检查
如您所见,请求的页面是否有错误并不重要,这不是Ajax错误,因此不应该被视为一个错误。
答案 2 :(得分:0)
您可以选择一个总是打印成功的模式,其他情况如ajax失败可以通过AJAX本身(HTTP响应代码)知道:例如:
You always print: yes for success and if correct result found
You always print: no for success and if incorrect result found
如果以上都没有返回,那么它的ajax失败,或者如果脚本打印另一个单词,那么你需要检查你的PHP。