上次向大家介绍了跨域的解决方式jsonp,总感觉差点什么,所以,补充一下,介绍另外一种跨域方式:
比如说,公司内部系统之间,比如ERP和OA之间想要进行数据交互,但是每个系统都有自己的域名,如果想实现数据的共享(使用ajax)就需要使用跨域请求。
html代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> <script> function callback(msg) { alert(msg) } </script> <script src="http://www.space.com/jsonp/kuayu.php?fn=callback"></script> </head> <body> <input type="button" id="bt" value="跨域请求"> </body> </html>
php代码
<?php $fn = $_GET['fn']; $str = 'hello ajax'; echo $fn."('$str')";
点击button,我们会发现,弹出msg
换个思路
把html代码换成如下代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script> function callback(msg) { alert(msg) } window.onload = function () { document.getElementById('bt').onclick = function () { var sc = document.createElement('script'); sc.src = "http://www.space.com/jsonp/kuayu.php?fn=callback"; document.getElementsByTagName('head')[0].appendChild(sc); } } </script> </head> <body> <input type="button" id="bt" value="跨域请求"> </body> </html>
php代码不变
其中,php代码中返回的数据并不一定是str,也可以是json格式(比如从数据库中查询出来的记过json_encode一下);
这样就可以实现不同域之间的跨域数据共享