使用XMLHttpRequest从远程服务器保存变量

时间:2014-12-17 19:45:04

标签: javascript ajax xmlhttprequest http-proxy

我看到其他一些线程相对类似,但我仍然觉得我的问题很独特所以我希望你们给我一个机会。

我想做什么:使用代理绕过相同的原始策略并将这些值(更改并需要由计时器检查)保存到可以修改的变量中。

服务器包含data.asp,它看起来像这样并且不时更新(尽管有更多的数据):

{ "Title":"Tile of song" ,"Artist":"The artist" ,"Album":"The album" ,"CDCover":"/covers/randomcover.jpg" }

我尝试的方法与http://qnimate.com/same-origin-policy-in-nutshell/#Same_Origin_Policy_for_AJAX上的方法类似。如果你们不想关注这个链接,我也会在这里发布数据。

<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
}
xmlhttp.open("GET","http://www.qnimate.com/ajaxdata.php",true);
xmlhttp.send();
}
</script>
</head>
<body>

<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>

代理文件:

<?php
   echo file_get_contents('http://www.qscutter.com/ajaxdata.txt');
?>

所以我想要做的是将数据存储到我可以改变的变量中,而不是使用innerHTML在div中显示它。最好经常检查这一点,以便进行更改。

建议?

我可以补充一点,我获得了服务器所有者的许可,可以检索信息并使用它,但不可能将脚本添加到他们的服务器,因此代理绕过尝试。

1 个答案:

答案 0 :(得分:0)

您正在以JSON格式检索数据吗?

{ "Title":"Tile of song" ,"Artist":"The artist" ,"Album":"The album" ,"CDCover":"/covers/randomcover.jpg" }

要在var中加载,您需要JSON.parse

例如

var data = JSON.parse(xmlhttp.responseText);

通过此函数解析时,对象data包含属性titleartistalbumCDcover

现在您可以修改对象

data['title'] = "I'll Be There This Christmas";
data['artist'] = "Gary Fomdeck";
//etc.

请阅读JSON的介绍。