2013-06-21 43 views
0

你好,我正试图解析一个.json文件..它只有一组数据我不认为$ .each是最好的方法,但它是我能找到的所有... 。用jquery解析json没有循环

这里是我的代码:

<script type="text/javascript"> 
function getQueryVariable(variable) 
{ 
     var query = window.location.search.substring(1); 
     var vars = query.split("&"); 
     for (var i=0;i<vars.length;i++) { 
       var pair = vars[i].split("="); 
       if(pair[0] == variable){return pair[1];} 
     } 
     return(false); 
} 
var url = 'http://f.cl.ly/items/1L2k221B183J1e1G411j/200.json'; 
/* <![CDATA[ */ 
$(document).ready(function(){ 
    $.getJSON(url, function(data){ 
      $.each(data.test, function(i,test){ 
       content = '<h1><p class="p1"><span class="s1">' + test.name + '</span></p></h1><table class="table table-bordered"><tbody><tr><td>Section:</td><td>Chemistry</td></tr><tr><td>Synonyms:</td><td>Mg Level</td></tr><tr><td>Container:</td><td>' + test.container + '</td></tr><tr><td>Reference Ranges:</td><td>' + test.reference + '</td></tr><tr><td>Availability:</td><td>' + test.availability + '</td></tr><tr><td>Special Handling:</td><td>' + test.specialHandling + '</td></tr><tr><td>Additional Comments:</td><td>' + test.additionalComments + '/td></tr></tbody></table>'; 
       $(content).appendTo("#main"); 
       $("#main").fadeIn(); 
     }); 
    }); 
}); 
/* ]]> */ 
</script> 

结果还挺工作...表是有,但代码循环3次,并显示“未定义”的所有veribles。

任何帮助将是巨大的!

+2

如果它循环三次,这意味着有'data'对象的三个属性。你可以在'$ .each'之前添加'console.log(data)'并发布结果吗? – jraede

+1

在这里发布你的JSON – Shaddow

+1

你有JSON的例子吗? –

回答

0

只需使用结果数据没有环。如果data.test不是数组,则可以直接访问对象属性。

类似:

<script type="text/javascript"> 
function getQueryVariable(variable) 
{ 
     var query = window.location.search.substring(1); 
     var vars = query.split("&"); 
     for (var i=0;i<vars.length;i++) { 
       var pair = vars[i].split("="); 
       if(pair[0] == variable){return pair[1];} 
     } 
     return(false); 
} 
var url = 'http://f.cl.ly/items/1L2k221B183J1e1G411j/200.json'; 
/* <![CDATA[ */ 
$(document).ready(function(){ 
    $.getJSON(url, function(data){ 
     content = '<h1><p class="p1"><span class="s1">' + data.test.name + '</span></p></h1><table class="table table-bordered"><tbody><tr><td>Section:</td><td>Chemistry</td></tr><tr><td>Synonyms:</td><td>Mg Level</td></tr><tr><td>Container:</td><td>' + data.test.container + '</td></tr><tr><td>Reference Ranges:</td><td>' + data.test.reference + '</td></tr><tr><td>Availability:</td><td>' + data.test.availability + '</td></tr><tr><td>Special Handling:</td><td>' + data.test.specialHandling + '</td></tr><tr><td>Additional Comments:</td><td>' + data.test.additionalComments + '/td></tr></tbody></table>'; 
     $(content).appendTo("#main"); 
     $("#main").fadeIn(); 
    }); 
}); 
/* ]]> */ 
</script> 
0

试试这个:

<script type="text/javascript"> 
function getQueryVariable(variable) 
{ 
     var query = window.location.search.substring(1); 
     var vars = query.split("&"); 
     for (var i=0;i<vars.length;i++) { 
       var pair = vars[i].split("="); 
       if(pair[0] == variable){return pair[1];} 
     } 
     return(false); 
} 
var url = 'http://f.cl.ly/items/1L2k221B183J1e1G411j/200.json'; 
/* <![CDATA[ */ 
$.getJSON(url, function(data) 
    { 
     for(var i in data.test) 
     { 
      var obj = data.test[i]; 

      var content = '<h1><p class="p1"><span class="s1">' + obj.name + '</span></p></h1><table class="table table-bordered"><tbody><tr><td>Section:</td><td>Chemistry</td></tr><tr><td>Synonyms:</td><td>Mg Level</td></tr><tr><td>Container:</td><td>' + test.container + '</td></tr><tr><td>Reference Ranges:</td><td>' + obj.reference + '</td></tr><tr><td>Availability:</td><td>' + obj.availability + '</td></tr><tr><td>Special Handling:</td><td>' + obj.specialHandling + '</td></tr><tr><td>Additional Comments:</td><td>' + obj.additionalComments + '/td></tr></tbody></table>'; 
      $(content).appendTo("#main"); 
      $("#main").fadeIn(); 
     } 
    }); 
/* ]]> */ 
</script> 
0

$.each(Object or Array, iterator)可能是你应该使用什么。真正的问题是data.test必须是对象或数组,而不是对象或数组的对象属性。