ajax返回错误状态代码
问题描述:
我正在一个小网站,我正在做一个Ajax调用删除表中的一行。我想要做的是让PHP返回一个状态代码来触发我的ajax请求中的.success
或.fail
函数。 展望不同的问题,我想出了这个解决方案,但它不工作:ajax返回错误状态代码
AJAX调用:
function delete_mov(id){
$.ajax("delete_mov.php?id="+id
)
.success(function(){
bootbox.alert("Movimento "+id+" correttamente cancellato");
})
.fail(function(){
bootbox.alert("Problemi a cancellare il movimento "+id);
});
}
和php:
try{
$s = $dbh -> prepare("DELETE FROM movimenti_banca WHERE di=$id");
$s -> execute();
}
catch (PDOException $e){
http_response_code(500);
exit;
//$message = $error_message.' '.$e->getMessage();
}
http_response_code(200);
我不能得到的是触发.fail
当查询未执行或返回错误时。我确信这个查询失败,因为我把一个错误(di而不是id)放在这里。 如果我删除要调用的php文件,则会触发.fail
。
编辑:修改我的代码,以http_response_code
进行测试,但在查询失败时仍未触发500状态。
EDIT2:调试我意识到,即使查询有错误(di=$id
应该id=$id
)捕捉部分不进入,因此500的状态从未设置
答
jQuery不知道你的PHP脚本应该做什么,所以它不会在返回的结果中寻找“状态”变量。所有的jQuery知道是否实际的HTTP请求“工作”。如果回来一个200的结果,,这是成功不管什么在结果。
您或者需要让您的success
处理程序查找HTTP请求成功但数据显示“错误”的情况,或者(更好)让PHP脚本使用http_response_code()
将HTTP状态从200更改为400或500会显示错误。
这正是我想要在我的PHP。返回500状态。所以我必须使用http_response_code,很高兴知道!谢谢:) –
我试图将您的解决方案应用于我的代码(请参阅编辑的代码),但它总是返回200.我错过了什么? –