因浏览器的同源策略,我们在向服务器请求数据时会涉及到跨域问题。
原生js实现jsonp跨域:
<script>
var localHandler = function(data){
alert('我是本地函数,可以被跨域的a.js文件调用,远程js带来的数据是:' + data.result);
};
</script>
<script src="http://www.zlxdsl.cn/remote.php"></script>
script标签和img标签中的src可以不受同源策略的影响,因而我们在这些标签中的src中可以向服务器请求数据,但是不管请求的是什么后缀的文件,都以js文件形式返回。上面这个例子中remote.php内容为
localHandler({"result":"我是远程js带来的数据"});
虽然请求的是php文件,但是文件内容以js返回。需要注意的是这个localHandler在html文件中一定要先于src跨域请求,不然会提示localHandler未定义。相当于直接将remote.php中的代码当成js执行了。