解析jqueryajax响应
我使用以下函数通过jQuery AJAX向发布表单:解析jqueryajax响应,ajax,jquery,Ajax,Jquery,我使用以下函数通过jQuery AJAX向发布表单: $('form#add_systemgoal.error').remove(); var formdata=$('form#add_systemgoal')。serialize(); $.ajaxSetup({async:false}); $.ajax({ 类型:“POST”, url:“/admin/systemgoalssystemgoalupdate?format=html”, 数据:formdata, 成功:功能(数据){ 控制台日志
$('form#add_systemgoal.error').remove();
var formdata=$('form#add_systemgoal')。serialize();
$.ajaxSetup({async:false});
$.ajax({
类型:“POST”,
url:“/admin/systemgoalssystemgoalupdate?format=html”,
数据:formdata,
成功:功能(数据){
控制台日志(数据);
},
});
它发布的很好,但我无法解析响应,它记录到控制台,如下所示
{
"成功":一,,
“插入”:{
“目标id”:“67”,
“goalsoptions_id”:“0”,
“用户id”:“0”,
“值”:“dsfdsaf”,
“已创建”:“2013-06-05 09:57:38”,
“修改”:空,
“到期日”:“2013-06-17 00:00:00”,
“状态”:“活动”,
“行动总数”:“0”,
“行动标题”:“sfdgsfdgdf”,
“操作类型”:“输入”,
“每项行动点数”:“1”,
“到期”:“2013-06-11 00:00:00”,
“成功”:1
}
}
我相信这就是我所期待的回应
但是,当我尝试执行警报(data.success)时
或响应对象的任何其他成员,它是未定义的
感谢您的建议。来电
var parsed_data = JSON.parse(data);
应该能够像您希望的那样访问数据
console.log(parsed_data.success);
现在应该显示“1”使用
parseJSON
。看这张照片
大概是这样的:
$.ajax({
type: "POST",
url: '/admin/systemgoalssystemgoalupdate?format=html',
data: formdata,
success: function (data) {
console.log($.parseJSON(data)); //will log Object
}
});
由于您使用的是
$.ajax
,而不是$.getJSON
,因此返回类型为纯文本。现在需要将数据
转换为JSON对象
您可以通过将$.ajax
更改为$.getJSON
(这是$.ajax
的缩写,仅预配置为获取json)来实现此目的
或者,您可以在收到数据后将字符串解析为JSON,如下所示:
success: function (data) {
var obj = $.parseJSON(data);
console.log(obj);
},
必须解析JSON字符串才能成为对象
var dataObject = jQuery.parseJSON(data);
所以你可以这样称呼它:
success: function (data) {
var dataObject = jQuery.parseJSON(data);
if (dataObject.success == 1) {
var insertedGoalId = dataObject.inserted.goal_id;
...
...
}
}
假设这是您的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”
。您是否故意输入了?format=html
参数?这意味着什么?如果您的AJAX Url返回一个引用JSON的内容头,您甚至不需要使用$.parseJSON(您的数据),因为默认情况下jQuery会自动这样做。我这样做了,并且在每个响应中我都有一个自定义的状态代码。通过这种方式,您可以很容易地验证是否发生了您所期望的情况。解决问题的根源是有意义的,而不是其后果在收到json后不要解析它。在原始请求中指示数据类型:“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);
}
});