jquery 处理错误的正确方法是什么?

ne5o7dgx  于 12个月前  发布在  jQuery
关注(0)|答案(1)|浏览(88)

我有点卡住了,我有这个PHP代码在这里,这是在我的文件API.php:

try {
    $test = "testt";
    if ($test == "test") {
        echo json_encode('success');
    }
    else
    {
        throw new Exception('Condition wrong');
    }
} catch (Exception $e) {
    echo json_encode($e->getMessage());
}

字符串
我通过jQuery Ajax调用api.php,如下所示:

var data = $('#form').serialize();
$.ajax({url: "api.php", dataType: "json", data: data, type: "POST", 
success: function(result){
    console.log(result);
},
error: function (textStatus, errorThrown) {
    console.log(errorThrown);
    console.log(textStatus);
}});


我遇到的问题是:error:function(textStatus,errorThrown)没有被调用。我想在我的catch上抛出另一个异常,而不是像这样的json_encode:
throw new Exception($e->getMessage());而不是echo json_encode($e->getMessage());
抛出两个具有相同消息的异常对我来说看起来很奇怪。目标是,如果有一个异常抛出,捕获并在我的异常错误调用中打印它,我是否遗漏了什么?

e4eetjau

e4eetjau1#

你的error函数永远不会被调用的原因是,来自请求的http response status code仍然是200 (OK)(因为异常已经被捕获)。显式地设置http_response_code

try {
    if (false)
        echo json_encode(['success'=>true]);
    else
        throw new Exception('Condition wrong');

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success'=>false, 'message'=>$e->getMessage()]);
}

字符串
在400到599之间的任何值都应该使错误函数被调用。参见HTTP response status codes

相关问题