Ajax跨域访问

1  function GetExamDynamicInfo() {
2                 var url = "http://localhost:9966/exam.cbi360.com/ExamDynamic.ashx?op=Exam&spid=" + sid + "&top=5&t=" + new Date().getTime();
3                 _examrequest.open("Get", url, true);
4                 _examrequest.onreadystatechange = ShowExam;
5                 _examrequest.send(null);
6         }
7  

 

  通过使用ajax可以使用异步操作,做到页面局部无刷新的效果。在本地两个项目之间如果说是需要在A项目中通过ajax访问B项目,url传入的是B项目中的要访问的地址,那么在IE中的左下角会有错误警告,提示没有权限访问。如果是在谷歌中则无提示,但获取不到。怎么回事呢?原来js是无法进行跨域访问的,既然用js无法访问,那就用web代理的方式访问吧。

 

 1   function GetExamDynamicInfo() {
 2                 var url = 
 3  send_screquest("Text?url=" + encodeURIComponent("http://localhost:9966/exam.cbi360.com/Handler/ExamDynamic.ashx?op=getExam&spid=" + sid + "&top=5&t=" + new Date().getTime();
 4 );    
 5 //将此url改为当前项目中的代理页面:Text.aspx
 6                 _examrequest.open("Get", url, true);
 7 
 8                 _examrequest.onreadystatechange = ShowExam;
 9                 _examrequest.send(null);
10         }

  通过Text.aspx获取即可,只在.cs页面中写入以下代码即可,可以将页面的信息删掉,留下最上边的一行<%...%>即可

1  string url = HttpUtility.UrlDecode(Request.QueryString["url"]);
2         WebClient myWebClient = new WebClient();
3         byte[] myDataBuffer = myWebClient.DownloadData(url);
4         string data = Encoding.UTF8.GetString(myDataBuffer);
5         Response.Write(data);
6         //Response.End(); 

 

posted @ 2012-08-07 22:05  ゞ修ζ止符℡_R²º¹³  阅读(482)  评论(0编辑  收藏  举报