.ajax json返回错误

时间:2011-10-22 21:29:49

标签: jquery ajax

$.ajax({
    type: 'POST',
    url: api_url+'client/'+client.id+'.json', 
    data: {
        _method: 'delete',
        id: client.id
    },
    success: function(data) {
        $('#delete-client').html('Success');
    },
    error: function(data) {
        $('#delete-client').css('color', 'red');
        $('#delete-client').html('Error');
    }
});

关于错误:函数jquery会以500标题状态

接收这个json对象
{"errors":{"code":777,"message":"Method requested does not yet exist","data":[]}}

但是,如果我使用data.errors.message,它不会显示错误。它显示了一个巨大的对象,当我在console.log返回对象使用

时,在chromes开发框中有不同的事件

固定

var error = jQuery.parseJSON(jqXHR.responseText);
$('#delete-client').html(error.errors.message);

2 个答案:

答案 0 :(得分:1)

添加:dataType:"json" ...............

答案 1 :(得分:-4)

尝试阅读$.ajax documentation

  

error(jqXHR, textStatus, errorThrown) - 功能

     

要调用的函数   如果请求失败。该函数接收三个参数:jqXHR   (在jQuery 1.4.x,XMLHttpRequest)对象中,描述类型的字符串   发生的错误和可选的异常对象(如果有)   发生了。第二个参数的可能值(除了null)是   “timeout”,“error”,“abort”和“parsererror”。当出现HTTP错误时   发生时,errorThrown接收HTTP状态的文本部分,   例如“未找到”或“内部服务器错误”。截至jQuery 1.5,   错误设置可以接受一系列功能。每个功能都是   反过来叫。注意:不会为跨域调用此处理程序   脚本和JSONP请求。这是一个Ajax事件。

检查参数列表。那不是你的数据。这是一个jqXHR对象。


根据定义,如果您已成功从服务器检索数据,则表示succeeded,而不是errored。数据是否包含字符串"error"的数据。

即使您的数据描述错误,您仍应使用success回调。不要发送500标题。


$.ajax({
    type: 'POST',
    url: api_url+'client/'+client.id+'.json', 
    data: {
        _method: 'delete',
        id: client.id
    },
    success: function(data) {
        if(data.errors) {
            //Server not able to process the request
        }
        else {
            $('#delete-client').html('Success');
        }
    },
    error: function(data) {
        //AJAX request not completed
        $('#delete-client').css('color', 'red');
        $('#delete-client').html('Error');
    }
});