jquery - 使用 JSON 格式的数据通过 JQuery AJAX 填充 HTML 表 : How to access data from variable in loop?

标签 jquery html json ajax

我有以下从 WCF RESTful 服务 返回的 JSON 数据。

{"Cities":["LUSAKA","HARARE"],"Countries":["ZAMBIA","ZIMBABWE"]}

我正在尝试使用此数据填充以下 HTML 表。

<table id="location" border='1'>
    <tr>
        <th>Countries</th>
         <th>Cities</th>
    </tr>
</table>

下面的代码可以工作,但是,它依赖于国家或城市的索引,并且我无法从匿名函数中的 item 变量访问数据。

var trHTML = '';

$.each(data.Countries, function (i, item) {

trHTML += '<tr><td>' + data.Countries[i] + '</td><td>' + data.Cities[i] + '</td></tr>';

});

$('#location').append(trHTML);

但是,如果我尝试像这样访问数据,它就不起作用:

$.each(data.d.results,function(d, item){ 

    $("#location tbody").append(
                "<tr>"
                  +"<td>"+item.Countries+"</td>"
                  +"<td>"+item.Cities+"</td>"
                +"</tr>" )
            })

如何使用上面循环函数中的 item 变量访问数据?

这是完整的工作代码:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>WCF Client</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

</head>

<body>

<table id="location" border='1'>
    <tr>
        <th>Countries</th>
         <th>Cities</th>
    </tr>
</table>

<script>

var service = 'http://localhost/DistributedDataSystem/Service.svc/';

$(document).ready(function(){

    jQuery.support.cors = true;

    $.ajax(
    {
        type: "GET",
        url: service + '/GetAllCountries/',
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {

        var trHTML = '';

        $.each(data.Countries, function (i, item) {

            trHTML += '<tr><td>' + data.Countries[i] + '</td><td>' + data.Cities[i] + '</td></tr>';
        });

        $('#location').append(trHTML);

        },

        error: function (msg) {

            alert(msg.responseText);
        }
    });
})

</script>

</body>
</html>

最佳答案

由于您有 2 个独立的数组 CountriesCities,因此没有统一的项目集合,每个数组都有一个 Countries城市 属性(property)。

此外,在修改后的代码中,您尝试在 data.d.results 上使用 each ,我希望根据您提供的示例数据未定义它。 总体而言,您可以通过附加单独的行来改进代码,但没有有用的 item 具有您需要的两个值。

如果您可以控制 JSON 数据,则可以按如下方式重组它:

[{City:"LUSAKA",Country:"ZAMBIA"},{City:"HARARE", Country: "ZIMBABWE"}]

然后像这样访问它:

$.each(data,function(i,item){
    $("#location tbody").append(
        "<tr>"
            +"<td>"+item.Country+"</td>"
            +"<td>"+item.City+"</td>"
        +"</tr>" )
    })

关于jquery - 使用 JSON 格式的数据通过 JQuery AJAX 填充 HTML 表 : How to access data from variable in loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660751/

相关文章:

python - 在嵌套字典中查找键的所有键和键

javascript - 单页应用程序 - JSON 有效负载是否也携带 HTML 标记语义

javascript - 如何在谷歌地图上显示多个标记?

javascript - 我可以将彩盒固定在头上吗?

c# - 在浏览器中启动应用程序

html - 如何在网站中嵌入光栅字体?

java - 如何使用 PHP 脚本和 JSON 从 MySQL 获取数据并将其存储到 Java 程序

php - 将 php 变量返回给 jquery ajax

javascript - 如何将值从数据库传递到单选按钮组?

python - jmespath:区分未找到的键和具有空值的键