PHP在不使用数组的情况下触发AJAX错误代码

Posted

技术标签:

【中文标题】PHP在不使用数组的情况下触发AJAX错误代码【英文标题】:PHP trigger AJAX error code without using array 【发布时间】:2011-07-13 12:43:32 【问题描述】:

我希望能够获取通过 AJAX 调用的 php 脚本,以返回 jQuery AJAX 处理程序 error: 将处理的错误代码。我不想使用 JSON 数组 - 我想保持它尽可能干净。有人能指出我正确的方向吗?

谢谢,

詹姆斯

【问题讨论】:

【参考方案1】:

Ajax 传输不必是 JSON。它可以是 xml、json、脚本或 html。默认情况下,AJAX 使用 XML(AJAX 中的 X 代表它)。我看到你正在使用 jQuery。如果您使用的是 ajax method,您有一个可以修改的 dataType 参数。

正如你所说,JSON 在我看来是最干净的之一,但如果你的意思是简单,你可以使用 text 代替。

【讨论】:

谢谢你,是的,我同意,JSON 非常干净。然而,我的意思是如何让脚本返回,以便执行 jQuery AJAX error: 函数内的代码。像使用exit(1) 或其他东西使PHP 退出并让JS 看到它并向JS 中的函数error: function(request, status, errorCode) 抛出错误。对不起,如果我不清楚。【参考方案2】:

试试这个:

header("HTTP/1.0 404 Not Found");
exit();

【讨论】:

【参考方案3】:

如果您想触发 AJAX 错误处理程序,只需传回 200 以外的其他内容!试试这个:

<?php
  header("HTTP/1.0 404 Not Found");
  exit();
?>

只要记住做两件事:

    尝试发送正确的错误代码以符合 HTTP 方法。即,如果您的页面抛出错误,那么您应该返回 500 等。您可以看到参考 here at the w3.org site。 确保在除空格之外的任何其他内容之前发送标头。

这应该是您想要的干净解决方案。

【讨论】:

记得在调用 header() 后退出() 或 die()。对 header() 的调用不会像 return 那样停止脚本的执行。 @Scott-Saunders 你是对的,正如我在你的回答中看到的那样。代码已编辑,您的答案和评论已获得投票。 如果您在 exit() 中包含来自 php 的错误消息(例如 exit('That value was invalid!');,您还可以使用此方法触发 AJAX 错误处理吗? @michael-martin-smucker 是的,它仍然会打印 jQuery 可以作为内容获取的错误消息。然而,要记住的一件好事是返回 jQuery 期望的内容类型。即如果 jQuery 期待 json,您可能希望返回 exit('"error":"That value was invalid!"')【参考方案4】:

编辑:jQuery'ajax'statusCode' 方法有效,但仅适用于 jQuery 1.5

我已经尝试过 jquery 的 ajax 的 'statusCode' 方法,现在可以使用 jquery 1.5 但没有得到任何结果... 但应该是这样去...

如果我的 php 脚本这样做:

 //localhost/dev/false.php
 header("HTTP/1.0 404 Not Found");  
 exit();

我的 javascript 就是这样做的:

$.ajax(
  url:'http://localhost/dev/false.php',
  statusCode: 
                  404: function() 
                      alert('page not found');
                  
              
          );

【讨论】:

嗯...你为什么要发布这个作为答案?将其作为您自己的问题发布不是更明智 - 这样您会得到更多答案:-) 是的,抱歉 - 这不是一个完整的答案,我想我应该将它作为评论发布。但是,如果您认为我的编辑“适用于 jquery 1.5”,那么这是一个正确的答案。感谢您的建议。:) 看看我的第一条评论,我不是故意要喷你的,哈哈——我的错;我只是认为如果你把它作为一个问题来问会更好——你会得到更有帮助的答案。不过,您的编辑使其成为答案 - 我会在需要时查看statusCode(非常方便!)。目前,我只需要一个“真或假”的错误;没什么花哨的;-) 酷 - statusCode 似乎确实很方便,可以用更少的代码更精确地定制你的回调...... :) 感谢您向我指出 :-) 到目前为止,我一直在使用 JSON,并使用 $return['html'] .= 回显大量 HTML,其中 every 回显应该是难以置信的无聊。

以上是关于PHP在不使用数组的情况下触发AJAX错误代码的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 - 在不触发错误的情况下获取对多关系的 objectID

核心数据 - 如何在不触发错误的情况下检查对象关系是不是存在

Ajax 和 JavaScript,如何在不使用 JQuery 的情况下发布数组?

函数在不删除动态数组的情况下工作。程序有效且没有错误

使用 jQuery-AJAX 向 PHP 提交表单并在不刷新的情况下在 div 中显示新内容的问题

Wordpress:在没有插件的情况下集成 Mailchimp 错误请求 400 Ajax URL