为什么XMLHttpRequest只能用于Twitter json?

问题描述:

PhoneGap将从下面的twitter中打印出json。但是,当我使用任何其他网址为我的ajax.open它只是显示一个空白屏幕。 道歉乱码布局为什么XMLHttpRequest只能用于Twitter json?

<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服务器,并开始从编码我的本地主机这些请求,并使用下面的代码,减去script标签的phonegap.js,它从HTML调用运行良好/Test2.html“。我删除了”phonegap.js“,因为在我的本地机器上没有使用phonegap,我用”Test.js“取代了它,它只包含了我从XMLHttpRequest W3school文档中获得的代码:

当我试图让我的模拟器调用/Test2.html它显示一个空白的屏幕。也从我自己的服务器我无法调用twitter json,我期望这由于跨域保护我因为我没有使用phonegap工作。

任何人都可以告诉我为什么我无法查看Test2和其他网址在我的模拟器上使用此代码。 也没有人知道任何其他在线jsons可用,我试过谷歌和雅虎的,但他们似乎也不工作。

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); 
} 
} 
+0

你用什么“其他网址”变得空白?对于您使用的任何网址,您应该能够将该网址放入浏览器中,并查看它将返回的内容。如果它返回空白,它将返回空白到AJAX呼叫。 – 2012-04-13 14:30:10

+0

http://www.google.com/calendar/feeds/[email protected]/public/full?alt=json是我尝试连接的其他json。当我将它放入浏览器时,我可以看到json,但它不会输出到我的屏幕上。 – user1016950 2012-04-16 07:12:01

您可能需要一个“API密钥”来访问其他JSON流。 Twitter不需要这样的密钥。

+0

如何判断特定的json是否需要密钥,例如:http://www.google.com/calendar/feeds/[email protected]/public/full?alt=json – user1016950 2012-04-16 07:28:46

+1

是的,你是这是一个访问问题,我在其他几个网页上进行了测试,其中一些需要访问,另一些则没有。谢谢您的帮助! – user1016950 2012-04-16 13:08:13

+1

这就是为什么Twitter倾向于成为编程平台的“事实上的”示例API来创建他们的JASON“Hello World”示例和教程:不需要API密钥以及大量新鲜有用的数据! – tomByrer 2012-04-17 22:53:55