2010-01-21 69 views
1

我有以下代码显示来自AJAX请求的JSON结果作为无序列表。它在Safari中运行良好,但在iPhone上的Mobile Safari上显示原始数据,但UL没有。事实上for循环没有被触发。在iPhone Web应用程序上使用Javascript:JSON for loop not displayed

$("#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); 

} 

我希望它与我的一个错误的事,谢谢你了... ...

回答

1

我也发现这是我的3G运行3.1.2,但在我的iPhone 4工作的情况。无论如何,为了避免这个错误,我现在包括道格拉斯克罗克福德的json2.js文件,它检测是否浏览器支持JSON,如果它没有实现它自己的。我(我相信即使Resig)也推荐使用jQuery的分析功能,因为它支持stringify,并且根本不使用eval。 (jQuery的确,或者至少使用过,在旧浏览器上回退到eval)。这里是您可以下载和主持的文件:

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

1

试图用一个变量集与JSON的时候我遇到了类似的问题.parse()和观看上的iTouch的经由移动Safari浏览器的结果:移动Safari调试器显示它,

找不到可变JSON

在做了一些关于错误消息的谷歌搜索之后,有人说移动Safari目前没有JSON.parse支持。这可以解释为什么你的for循环从不触发,因为你的var songdata永远不会被设置。如果您找到解决方法,请发布!

+0

哇谢谢你回到这里。 – Ben 2010-03-10 11:10:10