六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 32|回复: 0

ajax跨域请求

[复制链接]

升级  30.67%

92

主题

92

主题

92

主题

举人

Rank: 3Rank: 3

积分
292
 楼主| 发表于 2013-1-29 10:33:07 | 显示全部楼层 |阅读模式
1  跨域问题
在一个A.com页面下通过ajax访问B.com的数据,浏览器出于安全考虑的同源策略,会出现数据不可访问的跨域问题
 
如下面的写法,代码在A.com的页面上,访问B的数据
 
 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />  <script type="text/javascript">      function hello(result) { var i='hello world';alert(i);                alert(result);         } var xmlhttp=new XMLHttpRequest();xmlhttp.open("GET","http://B.com",false);xmlhttp.send();var jsondata=xmlhttp.responseText;hello(jsondata);</script>  
 
var jsondata=xmlhttp.responseText拿不到返回的数据。
 
 
2 跨域的解决-动态生成脚本
 
同源策略不阻止动态脚本的插入,于是可以改写成
 
 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />  <script type="text/javascript">      function hello(result) { var i='hello world';alert(i);                alert(result);         }     var JSONP=document.createElement("script");      JSONP.type="text/javascript";      JSONP.src="http://B.com?callback=hello";      document.getElementsByTagName("head")[0].appendChild(JSONP); </script> 
提供数据的服务端,需要生成以下规范的html:
$callback($data);
其实也就是一段js脚本语句,函数名为客户端传过来的,data为函数入参。
 
 
(引用 http://justcoding.iteye.com/blog/1366102
 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表