ajax返回错误状态代码


ajax to return error status code

我正在一个小站点上工作,在那里我正在执行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

EDIT:修改了我的代码,用http_response_code测试它,但当查询失败时仍然没有触发500状态

EDIT2:debugging我意识到,即使查询有错误(di=$id应该是id=$id),catch部分也不会输入,因此状态500永远不会设置

在您的PHP代码中,使用http_response_code函数将http状态代码设置为您想要的任何代码。

jQuery不知道PHP脚本应该做什么,所以它不会在返回的结果中寻找"状态"变量。jQuery只知道实际的HTTP请求是否"有效"。如果返回200的结果,即为成功,无论结果中的是什么。

您需要让success处理程序查找HTTP请求成功但数据显示"错误"的情况,或者(最好)让PHP脚本使用http_response_code()将HTTP状态从200更改为400或500,这将指示错误。