在jQuery中循环JSON

时间:2015-04-20 15:52:17

标签: javascript jquery json foreach

我知道以前曾经问过这个问题,但我无法解决这个问题。非常感谢任何帮助。

这是var obj

的内容
{
    "1": {
        "key1": "val",
        "key2": "val2"
    },
    "91": {
        "key1": "val",
        "key2": "val2"
    }
}

我像这样循环..

$.post("path/to/script.php", {
    'param': $('#param').val()
}, function (r) {
    var obj = $.parseJSON(r);
    $.each(obj, function (k, v) {
        //doing some stuff with v.key1,v.key2 etc
    });
});

在jQuery中获得一个经典有用的JS错误

  

TypeError:'在'操作数a'中无效'

1 个答案:

答案 0 :(得分:2)

该对象是嵌套的,因此您必须嵌套each

var obj = {
    "1": {
        "key1": "val",
        "key2": "val2"
    },
    "91": {
        "key1": "val",
        "key2": "val2"
    }
};

如果您将JSON作为字符串获取,则需要将字符串解析为JSON。



var r = '{"1": {"key1": "val","key2": "val2"},"91": {"key1": "val","key2": "val2"}}';

var obj = JSON.parse(r);
$.each(obj, function(k, v) {
  $.each(v, function(key, value) {
    console.log(value);
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
&#13;
&#13;
&#13;

演示:https://jsfiddle.net/L09bjjtc/1/

如果您以JSON的身份获得响应,则可以使用post方法的dataType选项:

$.post( "test.php", { func: "getNameAndTime" }, function( data ) {
    // data is JSON object
    // Data processing here
}, "json");

文档:https://api.jquery.com/jquery.post/