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 AJAXerror:
函数内的代码。像使用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 的情况下发布数组?