解析jQuery AJAX响应

时间:2013-06-05 09:02:41

标签: ajax jquery

我使用以下函数通过jQuery AJAX发布表单:

$('form#add_systemgoal .error').remove();
var formdata = $('form#add_systemgoal').serialize();
$.ajaxSetup({async: false});  
$.ajax({     
    type: "POST",
    url: '/admin/systemgoalssystemgoalupdate?format=html',
    data: formdata,
    success: function (data) {
        console.log(data);   
    },
});

它发布很好但我无法解析响应,它按如下方式登录到控制台

{
    "success": 1,
    "inserted": {
        "goal_id": "67",
        "goalsoptions_id": "0",
        "user_id": "0",
        "value": "dsfdsaf",
        "created": "2013-06-05 09:57:38",
        "modified": null,
        "due": "2013-06-17 00:00:00",
        "status": "active",
        "actions_total": "0",
        "actions_title": "sfdgsfdgdf",
        "action_type": "input",
        "points_per_action": "1",
        "expires": "2013-06-11 00:00:00",
        "success": 1
    }
}

我认为是我正在寻找的回应。

但是当我尝试alert(data.success);或响应对象的任何其他成员时,它是undefined

任何建议表示赞赏。

6 个答案:

答案 0 :(得分:18)

调用

var parsed_data = JSON.parse(data);

应该能够像您想要的那样访问数据。

console.log(parsed_data.success);

现在应该显示'1'

答案 1 :(得分:12)

 $.ajax({     
     type: "POST",
     url: '/admin/systemgoalssystemgoalupdate?format=html',
     data: formdata,
     success: function (data) {
         console.log(data);
     },
     dataType: "json"
 });

答案 2 :(得分:4)

您必须解析JSON字符串才能成为对象

var dataObject = jQuery.parseJSON(data);

所以你可以这样称呼它:

success: function (data) {
    var dataObject = jQuery.parseJSON(data);
    if (dataObject.success == 1) {
       var insertedGoalId = dataObject.inserted.goal_id;
       ...
       ...
    }
}

答案 3 :(得分:4)

想象一下,这是你的Json回复

{"Visit":{"VisitId":8,"Description":"visit8"}}

这是解析响应并访问值的方法

    Ext.Ajax.request({
    headers: {
        'Content-Type': 'application/json'
    },
    url: 'api/fullvisit/getfullvisit/' + visitId,
    method: 'GET',
    dataType: 'json',
    success: function (response, request) {
        obj = JSON.parse(response.responseText);
        alert(obj.Visit.VisitId);
    }
});

这会提醒VisitId字段

答案 4 :(得分:2)

由于您使用的是$.ajax而不是$.getJSON,因此您的返回类型是纯文本。您现在需要将data转换为JSON对象。

您可以将$.ajax更改为$.getJSON(这是$.ajax的简写,只预先配置为获取json)。

或者您可以在收到后将data字符串解析为JSON,如下所示:

    success: function (data) {
         var obj = $.parseJSON(data);
         console.log(obj);
    },

答案 5 :(得分:0)

使用parseJSON。查看doc

var obj = $.parseJSON(data);

这样的事情:

$.ajax({     
    type: "POST",
    url: '/admin/systemgoalssystemgoalupdate?format=html',
    data: formdata,
    success: function (data) {

        console.log($.parseJSON(data)); //will log Object

    }
});