我正在一个小网站上工作,我正在进行ajax调用以从表中删除一行。我想做的是让php返回一个状态代码来触发我的ajax请求中的.success
或.fail
函数。
针对不同的问题,我想出了这个解决方案,但它无法正常工作:
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
),也不会输入catch部分,因此状态500永远不会设置
答案 0 :(得分:1)
在您的PHP代码中,使用http_response_code函数将HTTP状态代码设置为您梦寐以求的任何内容。
答案 1 :(得分:0)
jQuery不知道你的PHP脚本应该做什么,所以它不会寻找"状态"返回结果中的变量。所有jQuery都知道实际的HTTP请求是否正常工作"。如果它返回200结果, 该成功 ,无论 结果。
您需要让success
处理程序查找HTTP请求成功但数据显示"错误"或(更好)让PHP脚本使用http_response_code()
的情况将HTTP状态从200更改为400或500,表示错误。