使用JSON.stringify并且无法访问JSON数组

时间:2016-03-28 08:53:40

标签: javascript php jquery json ajax

我正在使用php并使用json_encode()函数我返回/回显JSON数组。我正在使用jquery ajax并成功检索到这些数据:

[{"id":"1132","city":"Manila Central Post Office","province":"Manila"}]

我在我的Javascript btw上使用此代码:

var val = jQuery.parseJSON(JSON.stringify(result));

当我尝试访问数组上的数据时:

console.info(val.city); // results to undefine

它给了我'未定义'的结果。我试过做for in循环仍然无法正常工作。也许我做错了什么,任何帮助都会很棒。致谢

Ajax代码:

$.ajax({
    type: 'POST',
    url: path,
    cache: false,
    data: postData,
    success: function (result) {
        var val = jQuery.parseJSON(JSON.stringify(result, false, replacer));
        var val2 = jQuery.parseJSON(val);
        console.info(val2);
        console.info(val2.id);
    },
    error: function (e) {
        $("#sys_msg").html(e);
        $("#myModal").modal({
            show: true,
            backdrop: false,
            keyboard: true
        });
    }
});

4 个答案:

答案 0 :(得分:1)

val是一个数组。您需要指定索引,如下所示。

var result = [{ "id": "1132", "city": "Manila Central Post Office", "province": "Manila" }];
var val = jQuery.parseJSON(JSON.stringify(result));
alert(val[0].city);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:1)

此处A是一个对象数组,因此您无法通过调用val直接访问city值。如果返回的数据已使用val.city进行编码,则只需使用json_encode()即可。以下代码段显示了如何执行此操作 -

&#13;
&#13;
$.parseJSON(data)
&#13;
var temp = '[{"id":"1132","city": "Manila Central Post Office", "province":"Manila"},{"id":"1133","city": "Another Test Post Office", "province":"Test"}]'; //Defined temp as string since the data response returned from the server should also be a json encoded string.

var val = $.parseJSON(temp);

$.each(val, function(index, item) {
    var city = item.city;
    $('.container').append('City: '+city+'<br/>');
  });
&#13;
&#13;
&#13;

答案 2 :(得分:0)

请参阅while (<IN>) { print OUT if (/Target/../^$/) ; } ,可以轻松解决问题。如果你的ajax代码中没有附加这个,那么返回的响应将是一个json字符串,在这种情况下,你只需要用dataType:"json"jQuery.parseJSON()解析它。

因此,您可以将JSON.parse()添加到a​​jax中,或者只是解析它。

dataType

使用success: function(result){ var val = jQuery.parseJSON(result); // or JSON.parse(result); console.info(val[0].city); },

dataType

答案 3 :(得分:0)

您不必stringify然后再将其解析为JSON。您只需在AJAX中添加dataType: "json"即可。

$.ajax({
    type: 'POST',
    url: path,
    cache: false,
    data: postData,
    dataType: "json",

    success: function (result) {

        console.info(result);
        console.info(result.id);
    },
    error: function (e) {
        $("#sys_msg").html(JSON.stringify(e));
        $("#myModal").modal({
            show: true,
            backdrop: false,
            keyboard: true
        });
    }
});