Php 用于ajax(jquery post)目的的成功和失败标准

Php 用于ajax(jquery post)目的的成功和失败标准,php,ajax,Php,Ajax,显然,我一直在错误的地方浏览网页,寻找ajaxjquery帖子的成功和失败标准 例如,假设我正在使用ajax发布到php脚本。脚本可以返回: 出口0 出口1 杰森阵列 回来 等 这些返回值何时会转化为成功,何时会转化为失败 您可能已经知道,$.ajax支持beforeSend、success、error和complete回调 那么,在成功和失败的情况下,我的脚本应该发送什么来触发相应的回调。我相信它是基于头代码,即200-success。您可以将自己的特殊错误发回,例如 如果请求的页面中的代码有

显然,我一直在错误的地方浏览网页,寻找ajaxjquery帖子的成功和失败标准

例如,假设我正在使用ajax发布到php脚本。脚本可以返回:

出口0 出口1 杰森阵列 回来 等 这些返回值何时会转化为成功,何时会转化为失败

您可能已经知道,$.ajax支持beforeSend、success、error和complete回调


那么,在成功和失败的情况下,我的脚本应该发送什么来触发相应的回调。

我相信它是基于头代码,即200-success。您可以将自己的特殊错误发回,例如

如果请求的页面中的代码有问题,则不应出现Ajax错误。就Ajax而言,只要页面在物理上被成功请求,它就可以正常执行。请求的页面中的任何错误都不是Ajax的错误,因此在成功加载该页面后,应该由代码处理。使用上面链接中的自定义标题将使您更容易做到这一点

Ajax请求页面->页面加载&无错误->页面请求成功->执行结果错误检查

vs

Ajax请求页面->页面加载和出错->页面请求成功->执行结果错误检查


如您所见,被请求的页面是否有错误并不重要,这不是Ajax错误,因此不应将其视为一个错误。

您可以选择一个始终打印成功的模式,其他情况(如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。

Ben是对的,但是我会稍微扩展一下

jQuery根据被调用页面的HTTP响应代码确定成功或失败。请注意,这与发送回的响应中的内容不同

例如,假设您的PHP脚本位于

当用户访问该站点时,他们将得到服务器的响应。该响应可以是JSON对象,也可以是HTML页面,也可以是空响应。在所有这些情况下,响应代码可能是200。200响应代码意味着服务器理解请求,接受请求,并返回一些内容

现在让我们假设一个用户试图点击

假设notascript.php实际上不存在,服务器不知道如何处理它。它使请求失败,并发送回响应-可能是响应代码404或4xx范围内的其他内容

那么,如果您知道实际的URL,那么jQuery的错误处理程序是如何被调用的呢

好吧,假设您的AJAX调用正在尝试加载一篇博客文章,并尝试进行如下调用:http://url.com/post?id=5. 如果您的PHP脚本确定没有ID为5的博客条目,那么您可能不应该返回成功的响应。相反,4xx响应更合适。PHP有一个内置函数:

<?php

http_response_code(404);

?>
现在,jQuery将响应读取为失败,并调用错误处理程序

进一步阅读:

,它定义了HTTP响应代码


这就是为什么您要在成功块中编写自己的处理方法。我相信这个错误是在纯Ajax调用上,即它无法完成您的请求。成功意味着它基本上可以加载你的页面。之后的调试不是Ajax错误加载页面本身没有问题,这是加载页面上的错误。我将展开我的答案。它还取决于定义的数据类型。如果您告诉jQuery您需要json,但没有收到json,则假定这是一个错误,即使响应代码是200。