PhoneGap 将打印出下面来自 twitter 的 json。但是,当我为 ajax.open 使用任何其他网址时,它只会显示空白屏幕。 对于困惑的代码布局表示歉意
<pre>
</head>
<body>
<script type="text/javascript" src="phonegap.js"></script>
<script type="text/javascript">
function appReady(){
}
document.addEventListener("deviceready", appReady, false);
var ajax = new XMLHttpRequest();
ajax.open("GET","http://search.twitter.com/search.json?q=bacon",true);
ajax.send();
ajax.onreadystatechange=function(){
if(ajax.readyState==4 && (ajax.status==200))
{
document.getElementById('main').innerHTML = ajax.responseText;
}
}
</script>
Hello
<div id="main">
</pre>
使用 eclipse,我创建了一个 Web 服务器,并开始从本地主机对这些请求进行编码,并使用下面的代码,减去脚本标记中的phonegap.js,它可以很好地从/Test2.html 调用 html。我删除了“phonegap.js”,因为在我的本地计算机上它不使用phonegap,我确实将其替换为“Test.js”,其中只包含此代码,这是我从 XMLHttpRequest 上的 W3school 文档中获得的:
当我尝试让我的模拟器调用/Test2.html 时,它显示一个空白屏幕。另外,从我自己的服务器我无法调用 twitter json,我预计这是由于跨域保护重新打开,因为我不工作有音隙。
谁能告诉我为什么我无法在模拟器上使用此代码查看 Test2 和其他网址。 还有人知道任何其他可用的在线 json,我尝试了 google 和 yahoo 的,但它们似乎也不起作用。
function handler() {
if(this.readyState == this.DONE) {
if(this.status == 200 && this.responseXML != null && this.responseXML.getElementById('test').textContent)
{
// success!
processData(this.responseXML.getElementById('test').textContent);
return;
}
// something went wrong
processData(null);
}
}
最佳答案
您可能需要“API key ”才能访问其他 JSON 流。 Twitter 不需要这样的 key 。
关于javascript - 为什么 XMLHttpRequest 只适用于 Twitter json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142671/