2016-01-23 40 views
1

我试图从一个名为IMVU的聊天客户端检索用户的在线状态(由个人资料图片定期小图像持有人是不够的,我正在做更大的东西,所以我需要一些信号),要做到这一点的方法是使用此行的用户ID 1111111的例如: http://avatars.imvu.com/catalog/web_status_updater.php?ol=1&list=1111111将PHP文件内容导入到Javascript变量

它返回一个包含线JSON的PHP文件。我需要把整行文本放到一个javascript变量中,以便我可以使用它。 我需要在我制作的脚本中使用它,但似乎无法使其工作。我试过很多东西,最近似乎是这样的一个:

function readTextFile(file) 
{ 
    var rawFile = new XMLHttpRequest(); 
    rawFile.open("GET", file, false); 
    rawFile.onreadystatechange = function() 
    { 
     if(rawFile.readyState === 4) 
     { 
      if(rawFile.status === 200 || rawFile.status == 0) 
      { 
       var allText = rawFile.responseText; 
       alert(allText); 
      } 
     } 
    } 
    rawFile.send(null); 
} 


readTextFile("http://avatars.imvu.com/catalog/web_status_updater.php?ol=1&list=1111111"); 

(我会当我得到这个实验第一次工作改变alert(allText);return allText;return rawFile.responseText;,并确保该文本实际上是存储和显示。)

会发生什么情况是警报显示空白。只是一个白色的盒子,就是这样。我之前的尝试让这个盒子出现了,它说“未定义”,但现在它正在做我猜的一些事情?为什么它是空白的?我该如何解决它?

编辑: 它工作在IE但不是Firefox显然。

+0

您是否尝试过其他Web浏览器和您使用的是正确的网址,并没有在网址实际上返回的数据? – Mike

+0

只是一个愚蠢的问题,为什么不使用jQuery? – Xorifelse

+0

@Mike哦亲爱的上帝,它适用于IE,但不适用于Mozilla。这让我疯狂了一阵子。 – user326964

回答

3

我相信这里的问题是Same Origin Policy。您正尝试向与发起请求的域不同的域发出请求。

某些网站会指定允许这样做的标头,但这里返回的标头缺少Access-Control-Allow-Origin标头。

解决此问题的一个方法是在支持它的服务器上使用JSON-P

试试这个:

jQuery.ajax({ 
     url:"http://avatars.imvu.com/catalog/web_status_updater.php?ol=1&list=1111111", 
     dataType:"jsonp" 
}) 
.done(function(data) { 
     console.log(data) 
}); 
+0

它在Internet Explorer中工作。我有点困惑,你能提出一个解决方案吗?我想让它在所有浏览器中都能正常工作。 – user326964

+0

什么版本的IE?由于该策略是由浏览器强制执行的,因此可能是IE没有执行它,或者在标题不存在时允许。真正的解决方案是为imvu添加标题。 – caszi

+0

版本:11.0.9600.18163 – user326964