2013-06-21 73 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必須是對象或數組,而不是對象或數組的對象屬性。