我希望能够打破我的PHP脚本是用jQuery Ajax调用。如何将错误返回给jQuery以显示给用户?
PHP:if($gift_card != null)
{
echo "not null";
}
else
{
echo "null";
exit();
}
jQuery: error: function(jqXHR, textStatus, errorThrown) {
status.html("There was an error processing the request. " + errorThrown);
setTimeout(function() {
status.fadeOut();
}, 4000);
},
success: function( data ) {
if (console && console.log){
console.log( 'Sample of data:', data);
}
status.html('Email Sent Successfully.');
setTimeout(function() {
status.fadeOut();
}, 4000);
如果我回显null并退出,它仍然作为成功返回。我是否只需要检查成功的数据,看看返回的是什么,然后从那里开始?
如果我没弄错的话,如果你的php头结果代码是200以外的任何东西,它将被jquery $视为错误。ajax .
ajax中的" Success "是指php运行成功。我通常是这样做的:
成功:功能(数据){如果(数据= ="零"){}否则if (data=="not null"){}其他的{}}
对不起,这不是代码格式。我在我的机器人上
我认为通过HTTP状态码发送ajax错误信号是不适当的行为。我更喜欢的方法是返回一个json结构,它嵌入了状态信息,而不管PHP端发生了什么。
$data = array(
'error' => false,
'message' => 'Everything A-OK',
'error_code' => ...,
'data' => actual response stuff here
);
echo json-encode($data);
或
$data = array(
'error' => 'true',
'message' => 'Database query failed',
'error_code' => something relevant
);
echo json-encode($data);
这样,HTTP状态码将真正地告诉ajax客户端在HTTP级别发生了故障,并将ajax调用的结果留在更高级别进行处理。
人们会以两种方式争论,如果AJAX请求没有产生任何结果,那么AJAX调用获得404响应是合适的。但这就像告诉你的妻子杂货店不存在,因为当你开车去买牛奶的时候,他们没有牛奶了。嗯,没有。商店就在那儿,运作得很好。
一旦PHP进程被调用,那么你就不会在jquery中遇到错误处理程序(除非你没有返回预期的数据类型)。Json等).
所以你需要PHP脚本回显一个字符串并在你的成功处理程序中捕获它