跨域ajax查询

时间:2013-07-20 00:28:16

标签: javascript ajax

我有一些发送ajax请求的javascript代码,但我没有得到回应。我怎么想解决这个问题?谢谢!

我试图获取的链接是: http://research.engineering.wustl.edu/~todd/cse330/demo/lecture6/helloClass.txt

我的代码:

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript">    
  function sendRequest() {    
    alert("Sending request");    
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET","http://research.engineering.wustl.edu/~todd/cse330/demo/lecture6/helloClass.txt",true);
    xmlHttp.addEventListener("load",ajaxCallback,false);
    xmlHttp.send(null);
  }

  function ajaxCallback(event) {
    alert("Here is the response " + event.target.responseText );
    document.getElementById("demo").innerHTML= event.target.responseText;
  }    
  </script>
  </head>
  <body>
    <h1>My Ajax  Web Page</h1>
    <p id="demo">I will display something here</p>    
    <form>
      <input name="submit" type=button value="Send Ajax Request" onClick="sendRequest()">
    </form>    
  </body>
</html> 

感谢您的回答。我刚刚按照你的建议尝试了JSONP,我用

<script type="text/javascript" src="http://research.engineering.wustl.edu/~todd/cse330/demo/lecture6/helloClass.txt?jsonp=parseResponse"> 

我的新脚本标记但仍无效。有任何暗示吗?谢谢!

谢谢大家的回答!但我对这种技术不熟悉,所以仍然感到困惑。你介意给我带来更多细节代码来学习。而且我对代理听力方法非常感兴趣。

2 个答案:

答案 0 :(得分:2)

我认为您http://research.engineering.wustl.edu/上撰写此HTML。如果是这样,那么您刚刚使用了Same Origin Policy,它不允许跨域请求。

现在有办法进行跨域通信,一些常见的方法是Cross-Origin Resource SharingJSONP。您还可以使您的服务器,您的页面所在的域,代理服务器为您提取远程页面,因为服务器代码不受SOP约束。

答案 1 :(得分:0)

首先:你根本无法进行跨浏览器的ajax请求。

JSON会起作用,但需要对你的javascript进行一些重新编码。

解决方案:通过您的服务器中继请求。在服务器上创建一个侦听以下请求的代理: “/继电器?URL = http://research.engineering.wustl.edu/~todd/cse330/demo/lecture6/helloClass.txt” 并回复该网址的任何答案。 服务器上的编码很简单,只需要在javascript中进行最少的重新设计。如果您对如何编写服务器代码有任何疑问,请询问。