ajax捕获正确的错误代码

时间:2011-05-24 19:55:43

标签: javascript jquery ajax

我有这个小代码发布到我的服务器

    $.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在发布无效令牌时返回'令牌错误',或者对于缺少标题时返回'无效标题'。

提前致谢

4 个答案:

答案 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(即datadata.success)引用这些值。如果您需要一些例子,请告诉我。

答案 3 :(得分:0)

你可能想设置'错误'处理函数,它会处理你收到的错误。

在错误设置中查看http://api.jquery.com/jQuery.ajax/