在AJAX调用中无法从JSON获取值?

时间:2017-02-27 14:15:10

标签: javascript jquery json ajax

我是新手:)

我搜索了我的问题,有一些话题,但它们不像我的具体问题。

我有一个更新表单的Ajax调用,我可以看到console.log()中的值,但我不能在输入或div中取值insert,这里是我的代码:

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: 'my-web-service',
        dataType: "text",
        success: function(data) {
            console.log(data)
            var json = $.parseJSON(data);

            for (var i = 0; i < json.length; ++i) {
                $('#json').append('<div>' + json[i].name + '</div>');
            }
            console.log(json)
        }
    });
});

我的JSON数据是:

{
  "experience": [
    [
      "58b407cd30f8c7a508004210",
      {
        "artistInfo": {
          "id": "f8d3a411",
        }
      },
      {
        "name": "test",
        "description": "testing",
        "tipology": null,
        "email": "ext_link",
        "externalLink": "www.mywebstite.com",
      }
    ]
  ]
}

3 个答案:

答案 0 :(得分:1)

经验是数组中的数组(???), 您应该修复它或相应地访问它。

答案 1 :(得分:0)

看起来,如果你可以在控制台日志中看到json,那么可能是数据类型的问题,你确定它是一个数组吗?

json[i].name

这可能是一个对象,不能作为数组访问。检查dataType。或发布WS的输出

阅读完你的数据后非常清楚你试图以错误的方式访问它,它作为一个数组,你的第一个条目是一个String,然后是一个没有属性名称的Object,最后是第三个对象我想你想要得到这个名字。

json['experience'][2].name

{  
   "experience":[  
      [  
         "58b407cd30f8c7a508004210",
         {  
            "artistInfo":{  
               "id":"f8d3a411",

            }
         },
         {  
            "name":"test",
            "description":"testing",
            "tipology":null,
            "email":"ext_link",
            "externalLink":"www.mywebstite.com",

         }
      ]
   ]
}

答案 2 :(得分:0)

我更喜欢删除你的dataType条件,将类型更改为POST(当你发送一些数据时需要它)并跳过你的JSON解析器,它已被解析并抛出异常。

$(document).ready(function() {
    $.ajax({
        type: "POST",
        data: { }, // when you need it
        url: 'my-web-service',
        success: function(json) {
            console.log(json)

            for (var i = 0; i < json['experience'].length; ++i) {
                for (var i2 = 0; i2 < json['experience'][i].length; ++i2) {
                    if( json['experience'][i][i2].name ) {
                        $('#json').append('<div>' + json['experience'][i][i2].name + '</>');
                    }
                }
            }

        }
    });
});