欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > HTML >内容正文

HTML

jsonp+ajax实现浏览器跨域通信

发布时间:2025/3/20 HTML 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 jsonp+ajax实现浏览器跨域通信 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

 

Ajax/XDomainRequest 网络跨域访问控制

 

jsonp是一种技术手段而不是一种协议,也不是json数据。

 

<script type="text/javascript" >var jsonp_callback = function(responseData){console.log(responseData); }; </script>

这是js部分

同样使用 iframe或者<script>来访问

<script type="text/javascript" src="http://hostname:[port]/path/test.php?callback=jsonp_callback"></script>

php端代码

<?phpheader('text/html;charset=utf-8');$clientCallback = isset($_GET['callback'])?$_GET['callback']:'';$data = array('name'=>'zhangsan','gender'=>'male','age' =>20);//注意,一定要输出到页面echo $clientCallback.'('.json_encode($data).')';?>

测试一下

--------------------------------------------------------------------------------------------

以上方法属于直接访问的跨域通信,而在一些应用程序中,使用ajax+jsonp的进行跨域通信.

<script type="text/javascript" src="/js/jquery-1.4.1.min.js"></script> <script type="text/javascript">$(document).ready(function(){$.ajax({url:'http://192.168.121.15/test_json.php',dataType:"jsonp",jsonp:"jsonpcallback",success:function(data){console.log(data);},error:function(data){console.log(data);},headers: {  //这里的headers是非必须的,可以去掉"Access-Control-Allow-Origin":"http://www.example.com","Access-Control-Allow-Headers":"X-Requested-With",'referece':' //设置足迹 'Connection':'keep-Alive' //使用http_1.1}});}); </script>

这里的ajax中使用了jsonp通信,需要设置数据类型 dataType=jsonp,jsonp的回调函数名称 jsonpcallback,注意,在js中不需要实现jsonpcallback,在jquery中会直接将 success:function(data){...}赋值给jsonpcallback,关于实现代码如下

//模拟一下哦,其中settings是xhr对象的配置参数 var _callback = settings.success;  url = 'http://192.168.121.15/test_json.php'+'?'+settings.jsonp+'=_callback';

 

赶快试试吧

转载于:https://my.oschina.net/ososchina/blog/337404

总结

以上是生活随笔为你收集整理的jsonp+ajax实现浏览器跨域通信的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。