我的问题是一个javascript问题,我尝试用Jquery的$ .getJson函数解析一个Json文件,当我把它们分别放在一个变量中时,我注意到它需要更多的对象我想,这里是代码JS :
$.getJSON(
url,
function(data) {
var content = '<h1>Applications</h1>';
content += '<ul>';
for (var pos in data){
var app = data[pos];
content += '<li>'+app.name+'</li>';
}
content += '</ul>';
$('div.apps').html(content);
}
这里是json文件:
[
{
"name": "apidocs",
"staging": {
"model": "rack",
"stack": "ruby18"
}
,
{
"name": "apidocs2",
"staging": {
"model": "rack",
"stack": "php53"
}
,
{
"name": "apidocs3",
"staging": {
"model": "rack",
"stack": "java17"
}
]
那么,在我的html页面中,我有全局6个对象而不是3个。最后3个是&#34;未定义&#34;但我只想要那些在json文件中,因为firefox不接受未定义的标签。
答案 0 :(得分:0)
for ( var i = 0; i < data.length; i++ ) {
var app = data[ i ];
content += '<li>'+app.name+'</li>';
}
答案 1 :(得分:0)
避免 for..in
循环。
for (var pos in data){
用通常的替换它:
for (var i=0; i<data.length; i++){ //use as data[i]
如果您正在使用for..in循环,请务必在使用之前使用data.hasOwnProperty(..)
。否则,您将获得比预期更多的对象。它们实际上是data
继承的其他属性。
答案 2 :(得分:0)
答案 3 :(得分:0)
由于您使用的是jQuery,请使用其完美的$.each
函数。
$.each( data, function( d ) {
content += '<li>' + d.name + '</li>';
});