Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析jqueryajax响应_Ajax_Jquery - Fatal编程技术网

解析jqueryajax响应

解析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, 成功:功能(数据){ 控制台日志

我使用以下函数通过jQuery AJAX向发布表单:

$('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);
    }
});