解析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 } });