2010-01-21 40 views
1

以下JavaScript顯示在Safari中,但不顯示Mobile Safari。任何人都可以看到任何錯誤?Javascript:用於循環的JSON'

$("#results").append(data); 

var songdata = JSON.parse(data); 

var i = 0; 

for (i=0;i<=songdata.total;i++) 
{ 
    alert(i); 
    var songhtml = "<ul><li><img src=\"" + songdata.data[i].artwork + "\" /></li><li>" + songdata.data[i].title + "</li><li>" + songdata.data[i].artist + "</li><li>" + songdata.data[i].length + "</li><li>" + songdata.data[i].listen + "</li></ul>"; 
    $("#results").append(songhtml); 

} 

在此先感謝。

+0

爲什麼在解析之前追加'data'? – 2010-01-21 18:24:04

+1

什麼不工作?它沒有被執行嗎? img標籤中的src屬性是否爲空?它是否在for循環中的第一次傳遞後失敗?請更具體一點。 – 2010-01-21 18:25:58

+0

嘗試包括json2.js – MindStalker 2010-01-21 20:42:31

回答

3

JSON.parse不是官方的Javascript,它不支持所有的瀏覽器。這可能是你的問題,但我沒有移動Safari瀏覽器進行測試。

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

下載這個文件,並

<script type="text/javascript" charset="utf-8" src="/js/JSON2.js"></script> 
+0

是的,我做了一些測試,情況就是這樣。這個函數有什麼替代方法? – Ben 2010-01-21 20:27:48

+0

非常感謝。工作一種享受! – Ben 2010-01-21 21:39:34

0

for (i=0;i<=songdata.total;i++)看起來對我很可疑。你從零開始,但繼續等於或大於total,所以你要循環total+ 1次。 (我把它這是不是一個JavaScript/JSON數組,你使用total而非length。)

如果total告訴你有多少項有,如果在項目開始0,然後用剛<。如果條目從1開始,請執行此操作。 :-)但是,如果您引用無效的songdata[i],那麼songdata[i].artwork將失敗,因爲songdata[i]將是未定義的。

1

我不得不第二MindStalkers評論。 Id打賭它使用非跨瀏覽器JSON.parse。除此之外,你的循環結構看起來很可疑 - 再加上它對我爲什麼使用標準循環而不是jQuery.each()沒什麼意義。