如何XHR远程服务器?

时间:2012-04-21 01:58:38

标签: javascript ajax xmlhttprequest

以下代码是否足以用于XHR远程服务器?从普通的XHR代码中唯一改变的是我将完整的服务器URL放入XHR对象的open方法的URL参数中。我不确定这是否足够?它不起作用;所以我不确定缺少什么。

<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  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://insertURLofRemoteServerHere.com?parameter1=true",true);
xmlhttp.send();
}
</script>

2 个答案:

答案 0 :(得分:1)

通常,Javascript只能将xhrs发送到加载javascript的服务器。它被称为Same Origin Policy。我怀疑这是阻止你的原因。

答案 1 :(得分:1)

您的代码似乎在大多数情况下都是正确的。您正在处理跨浏览器兼容性等。但是,Same Origin Policy将不允许您从远程服务器上的脚本接收响应。

如果远程服务器支持JSON-P响应格式,则解决方法是。

另一种解决方法是服务器是否支持Cross Origin Resource Sharing。但是,从个人经验来看,这是不稳定的。如果服务器支持,我会使用JSON-P。

(旁注:如果使用像Jquery这样的库/框架,你可以让你的生活更加简单。上面的代码片段可以压缩成3-4行代码,框架将照顾跨浏览器兼容性。)