关于跨域,首先我们来讲一下基础知识。
–什么是跨域请求:从一个域下去访问另一个域下的脚本(js/php)或者文档结构(html)。
–为什么跨域:因为我们往往需要其他域下的数据,另一个因为同源策略的限制,不进行跨域无法直接请求另一个域的数据。
–怎么样进行跨域请求:img、a、form、link、iframe可以跨域,但是没有返回值,所以不进行使用,最主要使用的是script标签。然后,通过jsonp进行跨域请求,所使用的核心是通过script标签去请求另一个域下的数据,利用的是script的加载文件以及执行代码的特性。另一端的服务器需要接受script标签所传递的数据,并执行回调函数。
跨域的特征:协议/端口号/域名,这三者有一个不一样的,就可以称之为跨域。
接下来,我们使用script来写一个小例子,实现一下跨域。
//先上后台数据吧
<?php
$newsList = array();
$newsList[0] = array("title"=>"新闻1");
$newsList[1] = array("title"=>"新闻2");
$newsList[2] = array("title"=>"新闻3");
//json_encode,将数组转变成json串
$jsonStr = json_encode($newsList);
echo $_GET['callback']."(".$jsonStr.")";
?>
稍微解释一下,就是在后台存了一组数据,然后通过前台传来的函数名,调用函数,并把json当做参数传入函数内
//HTML代码
<script type="text/javascript">
var ul = document.getElementsByTagName("ul")[0];
function createNewsList(jsonstr){
for(var i = 0;i<jsonstr.length;i++){
var tit = jsonstr[i].title;
var lis = document.createElement("li");
ul.appendChild(lis);
lis.innerHTML = tit;
}
}
</script>
<script src="http://127.0.0.1/PHPCourse2/PHP/Lesson19---jsonchuan.php?callback=createNewsList"></script>
重要的一点是,大家要知道,在PHP中,字符串也是有长度,并且可以像获取数组那样去获取的。
然后就是,用script去跨域的时候,方法为get,因为需要传的数据,是需要拼接在script的src后面的。
嗯~感觉其他的就没啥好说的了~~~