【问题标题】:Parse JSON Array File and Populate The Result Into Select解析 JSON 数组文件并将结果填充到 Select
【发布时间】:2013-05-14 13:28:10
【问题描述】:

我正在我的公司做 Android PhoneGap 项目。 我有一个 JSON 文件,想将它放入我的 HTML 选择框中。 由于我还是新手,所以我对 JSON 的解析主要还是不太了解。

这是我的 JSON 文件 (city.json):

[{"CityID":1,"CityName":"Magelang"},{"CityID":2,"CityName":"Jayapura"},{"CityID":3,"CityName":"Aceh"}]

我真的不知道它是否需要解析。 我在这个帖子中关注了 RaYell 的回答。 Jquery getJSON populate select menu question

所以,我对这些进行编码以将结果填充到选择框中的选项中。

$.getJSON('city.json', function(data){
var html = '';
var len = data.length;
for (var i = 0; i< len; i++) {
    html += '<option value="' + data[i].CityID + '">' + data[i].CityName + '</option>';
}
$('#city').append(html);
});

但它不适用于我的代码。 我的选择框没有选项:( 有什么解决办法吗? 之前谢谢。

【问题讨论】:

  • getJSON 已经解析了。
  • 所以我不需要先解析JSON吧?
  • 不,你不知道。你也可以把#city的HTML代码吗?

标签: json


【解决方案1】:

您的for 循环不适用于对象。只有数组。

您需要使用for (var i in data) { 循环访问对象的所有属性。

【讨论】:

  • 还是不行 :( 是目录问题吗?我把json文件和html文件放在同一个目录下..
  • 返回的数据是一个JSON数组,所以他需要使用for循环,而不是for in
  • @TheDude JSON 数组? JSON 是 JavaScript Object Notation,所以不应该是数组。
  • 看看en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example。你会看到 Array 是一个 JSON 基本类型。
  • @TheDude +1 没错!
【解决方案2】:

尝试执行$('#city').html(html); 看看错误是什么:

编辑:将此添加到 $.getJSON 调用的末尾:

    $(document).ready(function(){
        $.getJSON(. . .).fail(function( jqxhr, textStatus, error ) {
             var err = textStatus + ', ' + error;
             alert( "Request Failed: " + err);
             });
    });

【讨论】:

  • 还是没用 :( 仅供参考,#city 是我的选择框的 id。无论如何,.html 和 .append 有什么不同?
  • html 将替换#city 的内部html。 append 将附加结果。如果它已经是空的,我想它会做同样的事情。
  • 你能在你的函数内部做alert(data) 以确保数据包含信息吗?
  • 嗯我试过了,但没有警报.. 'for (var i in data) { alert(data); //html += ''; }'
  • 我用一些代码编辑了我的答案以帮助查看错误消息。
猜你喜欢
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多