2013-05-14 29 views
0

我在我的公司中执行Android PhoneGap项目。 我有一个JSON文件,并希望它进入我的HTML选择框。 由于我仍然是新手,我大部分都不懂JSON解析。解析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); 
}); 

但它没有在我的代码上工作。 我的选择框现在没有选项:( 任何解决方案之前, 感谢

+0

'getJSON'已经解析了。 – TheDude 2013-05-14 04:49:41

+0

所以我不需要首先解析JSON呢? – 2013-05-14 05:10:39

+0

不,你没有。你也可以把#city的HTML代码? – TheDude 2013-05-14 05:15:14

回答

0

试着做$('#city').html(html);,看看有什么错误是:?

编辑:这添加到$.getJSON通话结束:

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

仍然没有工作:( 仅供参考,#city是我的选择框的ID .. 无论如何,有什么不同在.html和.append之间? – 2013-05-14 04:56:27

+0

'html'将会替换'#city'的内部html,'append'会附加结果,如果它已经是空的,我想它会做同样的事情 – TheDude 2013-05-14 05:09:53

+0

你能做吗'警报(数据)'自己的函数中,以确保数据中包含的信息? – TheDude 2013-05-14 05:10:42

0

for循环将无法在对象。只有阵列。

您需要使用for (var i in data) {循环通过一个对象的所有属性。

+0

该功能之前,仍然没有工作:( 它是一个目录问题加载?我把JSON文件在同一目录作为HTML文件.. – 2013-05-14 05:11:59

+0

返回的数据是一个JSON阵列,这样他就需要使用'for'循环,不为'in'。 – TheDude 2013-05-14 05:14:38

+0

@TheDude一个JSON阵列?JSON是JavaScript对象符号,所以不宜是一个数组。 – Jared 2013-05-14 08:25:27