我使用以下函数通过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
。
任何建议表示赞赏。
答案 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
}
});