错误函数未在 AJAX 中使用 Jquery 调用


Error function not invoked in AJAX using Jquery

 $("#submit").click(function(){
    $.ajax({
       type: "POST",
       url: "session.php",
       data: "name=John123&location=Boston",
       success: function(a, msg2){
          $('#feedback').removeClass().addClass('success').text(a +' '+msg2).fadeIn('slow');
       },
         error: function(a, b, c){
              $('#feedback').removeClass().addClass('error').text('This is' +b).fadeIn('slow');
           },

我正在尝试在 PHP 中使用以下代码调用错误函数:

if ($_POST['name'] != "John") {
        $message['error'] = true;
        $message['message'] = "Hmm, please enter a subject in the subject field.";
        echo json_encode($message);
}
else
{
    echo $_POST['name'];
}

但我总是调用成功函数。有什么方法可以调用错误函数。

您需要

将HTTP状态代码设置为500(或任何其他>= 400)以指示存在错误。

你为什么不做这样的事情:

$("#submit").click(function(){
    $.ajax({
        type: "POST",
        url: "session.php",
        data: "name=John&location=Boston",
        success: function(a, msg2){
            if(a.error) {
                $('#feedback').removeClass().addClass('error').text('This is' +a.message).fadeIn('slow');
            }
            else {
                $('#feedback').removeClass().addClass('success').text(a.name +' '+msg2).fadeIn('slow');
            }
        }
    });
});

和:

if ($_POST['name'] != "John") {
    $message['error'] = true;
    $message['message'] = "Hmm, please enter a subject in the subject field.";
}
else
{
    $message['error'] = false;
    $message['name'] = $_POST['name'];
}
echo json_encode($message);
error 函数仅在 ajax

失败时调用,因此您可以检查 ajax 是否返回错误是否存在。