解析jQuery AJAX响应

Bar*_*ton 23 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);   
    },
});
Run Code Online (Sandbox Code Playgroud)

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

{
    "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
    }
}
Run Code Online (Sandbox Code Playgroud)

我相信这是我正在寻找的回应.

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

任何建议表示赞赏

小智 19

调用

var parsed_data = JSON.parse(data);
Run Code Online (Sandbox Code Playgroud)

应该能够像你想要的那样访问数据.

console.log(parsed_data.success);
Run Code Online (Sandbox Code Playgroud)

现在应该显示'1'

  • 收到json后不要解析它.在原始请求中指出`dataType:'json'`,你将得到json,而不是文本. (4认同)

Kev*_*sox 14

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


小智 6

想象一下这是你的 Json 响应

{"Visit":{"VisitId":8,"Description":"visit8"}}
Run Code Online (Sandbox Code Playgroud)

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

    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);
    }
});
Run Code Online (Sandbox Code Playgroud)

这将提醒 VisitId 字段