如何处理Jquery.ajax触发的php脚本中的错误


How handle errors in php script fired by Jquery.ajax?

我有php脚本,用jquery ajax函数启动。类似这样的东西:

$("a.test").click (function () {
var new_id = $(this).attr("new_id");

$.ajax({
    url: 'test.php',  
        type: "POST",
        cache: false,
        async: true,
    data: ({
        new_id : new_id
        }),
    success: function (data) { 
        alert (data);       
    },
    error: function(){
        alert('error');
    }
});
return false;
}); 

现在,a在test.php中有一些错误,但我看不到它们。Srpt只是运行,我没有任何反馈,只有错误警报(alert('error'((。

我如何才能找回test.php中的错误来处理它们?

如果您echo test.php中的错误,您可以简单地执行:

$.ajax({
    url: 'test.php',  
        type: "POST",
        cache: false,
        async: true,
    data: ({
        new_id : new_id
        }),
    success: function (data) { 
        alert (data);       
    },
    error: function(data){
        alert('error:'+data);
    }
});
return false;
}); 

编辑:

我通常做这样的事。在test.php中,如果您遇到错误,请使用错误信息创建一个数组,并将其返回json编码:

$message=array('error' => 1,'message' => '<div class="alert alert-danger" role="alert">' . $login['message'] . '</div>' );
echo json_encode($message);

现在,在您的jquery中,您可以通过以下方式检索错误:

success: function (data) { 
        alert (data);       
    },
    error: function(data){
        var obj = JSON.parse(data);
        alert(obj.message);
    }

当你把它放在这样的数组中时,你甚至不需要error: function(data)了,因为你可以简单地:

success: function (data) { 
    var obj = JSON.parse(data);      
    if (obj.error) {
        // do something
        alert (obj.message); 
    }else{
        // do something else
    }
 },

在test.php上,您可以使用此处解释的代码显示错误:https://stackoverflow.com/a/21429652/6525724

然后在这个页面上,你可以使用警报(数据(而不是警报("错误"(。

试试这个

 error: function(XMLHttpRequest, textStatus, errorThrown) { 
    alert("Status: " + textStatus); alert("Error: " + errorThrown); 
}