我有这个小代码发布到我的服务器
$.ajax({
type: 'POST',
url: 'post.php',
data: { token: '123456', title: 'some title', url: 'http://somedomain.com', data: '' },
success: function(data){
alert (data)
}
});
想知道我如何“捕获”ajax请求的不同错误: 例如,post.php在发布无效令牌时返回'令牌错误',或者对于缺少标题时返回'无效标题'。
提前致谢
答案 0 :(得分:2)
如果服务器发送的内容不是200状态代码,您可以使用错误处理程序:
$.ajax({
type: 'POST',
url: 'post.php',
data: {
token: '123456',
title: 'some title',
url: 'http://somedomain.com',
data: ''
},
success: function(data){
alert(data);
},
error: function() {
alert('some error occurred');
}
});
如果您的服务器对请求参数执行某些验证,则可能会返回包含错误信息的JSON对象(并设置正确的Content-Type: application/json
):
{ error: 'some error message' }
在这种情况下,您可以在成功回调中处理此问题:
success: function(data) {
if (data.error != null && data.error != '') {
// TODO: the server returned an error message
alert(data.error);
} else {
// TODO: handle the success case as normally
}
}
答案 1 :(得分:1)
// build the initial response object with no error specified
$response = array(
'error' => null
);
// the data checks went fine, process as normal
if (data is ok) {
$response['some_object'] = value;
// something is bad with the token
} else if (bad token) {
$response['error'] = 'token error';
// something is bad with the title
} else if (bad title) {
$response['error'] = 'bad title';
// some other error occured
} else {
$response['error'] = 'unspecified error';
}
// output, specifying that it's JSON data being returned
header('Content-Type: application/json');
echo json_encode($response);
和....
// $.ajax({ ...
success: function(data){
if (!data.error){
alert('OK!');
}else{
alert('Error: '+data.error);
}
}
// });
也许是这样的? (除非你说的是合法的AJAX错误,在这种情况下提供error: function(x,t,e){}
ajax选项或使用.ajaxError
)
答案 2 :(得分:0)
我想要做的是将dataType
的{{1}}设置为$.ajax()
,然后在PHP页面中,您可以回显一个'json'
关联数组。这将允许您通过函数参数json_encode()ed
(即data
,data.success
)引用这些值。如果您需要一些例子,请告诉我。
答案 3 :(得分:0)
你可能想设置'错误'处理函数,它会处理你收到的错误。
在错误设置中查看http://api.jquery.com/jQuery.ajax/。