无法使用Ajax Json响应填充Table

时间:2014-05-08 14:55:50

标签: javascript jquery json

我发送这个有效的JSON作为我的网络服务电话

的回复
[
    [
        {
            "id": 123,
            "vendorName": "PoppyCounter",
            "item": "Chocltae"
        },
        {
            "id": 1234,
            "vendorName": "PoppyCounter",
            "item": "Chocltae"
        },
        {
            "id": 12345,
            "vendorName": "PoppyCounter",
            "item": "Chocltae"
        },
        {
            "id": 123456,
            "vendorName": "MahalakshmiCounter",
            "item": "Chocltae"
        }
    ]
]

这是我的Jquery

$(document).ready(function() {
        $.ajax({
            type: 'GET',
            url: 'http://192.168.2.46:8086/Poller/poll/initial',
            jsonpCallback: 'jsonCallback',
            dataType: 'jsonp',
            success: function (response) {
                var trHTML = '';
                $.each(response, function (i, item) {
                    trHTML += '<tr><td>' + item.id + '</td><td>' + item.vendorName + '</td><td>' + item.item + '</td></tr>';
                });
                $('#records_table').append(trHTML);
            },
            error: function (e) {
                $("#divResult").html("WebSerivce unreachable");
            }
        });



    });


<table id="records_table" border='1'>
    <tr>
        <th>Rank</th>
        <th>Content</th>
        <th>UID</th>
    </tr>

这样结果在浏览器中看起来像这样

enter image description here

我正在编辑我的问题

已编辑的部分

由于跨域限制,我正在将jSON形成为jsonp,如下所示

这是我的ajax jquery请求

 $(document).ready(function() {
        $.ajax({
            type: 'GET',
            url: 'http://192.168.2.46:8086/Poller/poll/initial',
            jsonpCallback: 'jsonCallback',
            dataType: 'jsonp',
            jsonp: false,
            success: function (response) {
                var trHTML = '';
                $.each(response, function (i, item) {
                      trHTML += '<tr><td>' + item.id + '</td><td>' + item.vendorName + '</td><td>' + item.item + '</td></tr>';
                });
                $('#records_table').append(trHTML);

                doPoll();
            },
            error: function (e) {
                $("#divResult").html("WebSerivce unreachable");
            }
        });

    });

由于jsonCallback,它没有形成有效的JSON响应,我在形成表时未定义 无论如何,我可以从有效的JSON响应?

jsonCallback([
    [
        {
            "id": 123,
            "vendorName": "PoppyCounter",
            "item": "Chocltae"
        },
        {
            "id": 1234,
            "vendorName": "PoppyCounter",
            "item": "Chocltae"
        },
        {
            "id": 12345,
            "vendorName": "PoppyCounter",
            "item": "Chocltae"
        },
        {
            "id": 123456,
            "vendorName": "MahalakshmiCounter",
            "item": "Chocltae"
        }
    ]
])

4 个答案:

答案 0 :(得分:1)

您还需要再有一个$.each()循环:

$.each(response, function (i, item) {
    $.each(item, function(_, o){
      trHTML += '<tr><td>' + o.id + '</td><td>' + o.vendorName + '</td><td>' + o.item + '</td></tr>';
    });
});

答案 1 :(得分:0)

您的数据是数组中的数组,您只将其视为数组

尝试在each上执行相同的response[0]循环,例如

修改

我不确定你可以在JSON对象上使用jquery each,而应该使用:

for(var i in response) {
    response[i]; // do something with it
}

答案 2 :(得分:0)

您似乎在该结果中有另一个数组。尝试再循环一次,例如:http://jsfiddle.net/yH942/1/

$.each(jsonResponse, function(key, array) {
$.each(array, function(k, object) {
    // your code goes here
});
});

答案 3 :(得分:0)

接收后解析对象或使用$ .getJSON而不是$ .ajax。您正在尝试将字符串用作对象。

success: function (response) {
   response = JSON.parse(response);
}