JSON没有提取数据?

时间:2012-02-14 21:18:23

标签: ios json cordova

任何人都可以告诉我为什么这不是我的JSON数据。我认为我的语法正确但页面不会提取数据。有什么想法吗?

<!DOCTYPE html>
<html>
    <head>
        <title>PhoneGap Ajax Sample</title>
        <script type="text/javascript" src="phonegap.js"></script>
        <script type="text/javascript">
            function appReady(){
                var ajax = new XMLHttpRequest();
                ajax.open("GET","http://www.lcbcchurch.com/mobileJSON/homeslideshow",true);
                ajax.send();

                ajax.onreadystatechange=function(){
                    if(ajax.readyState==4 && (ajax.status==200||ajax.status==0)){
                        eval('var data = ' + ajax.responseText + ';');
                        var theResults = data.results;
                        var theHTML = '';
                        for(var i=0;i<theResults.length;i++){
                            theHTML += [
                                        '<div class="avatar"> <img src='+theResults[i].slideshow-image+' />'].join('');
                        }
                        document.getElementById('main').innerHTML = theHTML;
                    }
                }
            }
            document.addEventListener("deviceready", appReady, false);

            </script>

    </head>
    <body>
        <div id="main">

        </div>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

没有其他信息很难说,但是:

在调用.send()之前设置ajax.onreadystatechange,否则响应可以在你告诉实例如何处理之前到达 - 它完全取决于浏览器的实现。

其次,您是托管它还是从文件系统本地尝试?在许多浏览器中,Ajax调用不能从文件系统中运行(它被认为是一个跨站点脚本漏洞) - 所以最好在本地安装一个简单的Web服务器来测试 - 并从中获取json。

最后,不要使用eval,它的邪恶; - )

使用

var result = JSON.parse(string);

代替。