任何人都可以告诉我为什么这不是我的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>
答案 0 :(得分:0)
没有其他信息很难说,但是:
在调用.send()之前设置ajax.onreadystatechange,否则响应可以在你告诉实例如何处理之前到达 - 它完全取决于浏览器的实现。
其次,您是托管它还是从文件系统本地尝试?在许多浏览器中,Ajax调用不能从文件系统中运行(它被认为是一个跨站点脚本漏洞) - 所以最好在本地安装一个简单的Web服务器来测试 - 并从中获取json。
最后,不要使用eval,它的邪恶; - )
使用
var result = JSON.parse(string);
代替。