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

时间:2016-08-17 11:48:23

标签: php jquery ajax error-handling

我有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;
}); 

现在,test.php中有一些错误,但我无法看到它们。 Sript只是运行而我没有反馈,只有错误警报(警告('错误'))。

我如何找回错误,我在test.php中处理它们?

3 个答案:

答案 0 :(得分:2)

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

然后在此页面而不是警告('错误')您可以使用警报(数据)。

答案 1 :(得分:2)

如果您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
    }
 },

答案 2 :(得分:2)

试试这个

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