解析对象中的数组

时间:2015-02-25 00:29:29

标签: php jquery json

我的数据来自PHP,如下所示:

auth0: Object
"client_id: "1234"
tables: Array[2]
  0: Object
     clients_avail: "demo"
  1: Object
     clients_avail: "4532t78"

编辑:这是实际的JSON:

{"auth":{"id":"bob"},"tables":[{"clients_avail":"demo"},{"clients_avail":"4532t78"}]}

以上检索如下:

$.ajax({
        url: 'getit.php',
        type: 'POST',
        dataType: 'json',
        data: {
            id_token: my_token
        },
        success: function(data) {
$.each(full_data, function (data) {
$('#clients_avail').append("<option>" + data.tables.clients_avail + "</option>");
 $('#my_id').text(data.auth.id);
}
});

这是未被发现的错误:

Uncaught TypeError: Cannot read property 'clients_avail' of undefined

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

问题是$ .each()中的参数;试着这样做。

success: function(data) {
   $.each(data.tables[0], function (k, val) {
      $('#clients_avail').append("<option>" + val.clients_avail + "</option>");
      $('#my_id').text(data.auth.id);
   }

我正如 skobaljic 告诉你的那样,你应该组织你的json或使用json_encode()输出你的数据。

答案 1 :(得分:1)

由于你有一个数组,你需要迭代

$.ajax({
    url: 'getit.php',
    type: 'POST',
    dataType: 'json',
    data: {
        id_token: my_token
    },
    success: function (data) {
        $.each(data.tables, function (data) {
            $('#clients_avail').append("<option>" + data.clients_avail + "</option>");
        })
        $('#my_id').text(data.auth[0].id);
    }
});

同样在你的情况下,auth是一个对象数组,我认为这是不必要的,所以请尝试将您的回复设为{"auth":{"id":"bob"},"tables":[{"clients_avail":"demo"},{"clients_avail":"‌​4532t78"}]},然后$('#my_id').text(data.auth.id);