我在互联网上看,但实际上我没有成功,所以我在这里尝试:)
我有一个jquery函数,如:
var arr = [];
$.post('my.php',{
data: arr
}).done(function(response){
console.log(response);
alert('successful');
}).fail(function(response){
console.log(response);
alert('failure');
});
我的php看起来像
$bOk = false; //preset
//...
return $bOk; // actually returns false here for testing
这些是代码示例,但实际上就是它的作用。
为什么return false
不会调用.fail()
?
如果我有某种php错误,则会调用.fail()
我需要做些什么来调用.fail()
函数吗?
答案 0 :(得分:3)
.fail()
用于HTTP错误。如果您要执行header("HTTP/1.0 404 Not Found");
之类的操作,则应触发失败。但是目前,它返回200 OK message
,因为它从服务器获得响应。
尝试实施404响应,或在.success()
调用中,检查响应是否包含错误响应。
编辑。
应该注意的是,我作为示例(404)给出的回答可能不是最合适的(取决于您的申请的具体情况)。
在此处查看此链接以获取HTTP状态代码列表,并确定最有效的内容。 最有可能的是,调查400和500范围。
答案 1 :(得分:0)
失败回调应该用作失败回调,所以只有当某些事情真的失败时才会使用。
在您的情况下,您可以返回错误代码,因此在成功回调中您将执行以下操作:
var arr = [];
$.post('my.php',{
data: arr
}).done(function(response){
if(response==2){
alert('password is invalid');
return;
}
console.log(response);
alert('successful');
}).fail(function(response){
alert('An unexpected error occurs, please contact the administrator if this error persist.');
});
如果您仍想在失败回调上进行登录,那么在这种情况下,您需要使用http_response_code php函数返回http状态,如下所示:
http_response_code(404);
答案 2 :(得分:-1)
如果您想在.fail()中返回http错误,请使用以下代码
if ($everything_is_ok)
{
header('Content-Type: application/json');
print json_encode($result);
}
else
{
header('HTTP/1.1 500 Internal Server Booboo');
header('Content-Type: application/json; charset=UTF-8');
die(json_encode(array('message' => 'ERROR', 'code' => 1337)));
}