解析jQuery AJAX响应

我使用以下函数通过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响应对象的任何其他成员。

任何建议表示赞赏

调用

 var parsed_data = JSON.parse(data); 

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

 console.log(parsed_data.success); 

现在应该显示’1′

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

想象一下,这是你的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字段

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

 var dataObject = jQuery.parseJSON(data); 

所以你可以这样称呼:

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

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

您可以通过将$.ajax更改为$.getJSON (这是$.ajax的简写,仅预先配置为获取json)来执行此操作。

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

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

使用parseJSON 。 看看文档

 var obj = $.parseJSON(data); 

像这样的东西:

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