jsonp+ajax实现浏览器跨域通信
发布时间:2020-12-16 19:13:12 所属栏目:百科 来源:网络整理
导读:Ajax/XDomainRequest 网络跨域访问控制 jsonp是一种技术手段而不是一种协议,也不是json数据。 scripttype="text/javascript"varjsonp_callback=function(responseData){console.log(responseData);};/script 这是js部分 同样使用 iframe或者script来访问 sc
Ajax/XDomainRequest 网络跨域访问控制 jsonp是一种技术手段而不是一种协议,也不是json数据。 <scripttype="text/javascript"> varjsonp_callback=function(responseData){ console.log(responseData); }; </script> 这是js部分 同样使用 iframe或者<script>来访问 <scripttype="text/javascript"src="http://hostname:[port]/path/test.php?callback=jsonp_callback"></script> php端代码 <?php header('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的进行跨域通信. <scripttype="text/javascript"src="/js/jquery-1.4.1.min.js"></script> <scripttype="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'; 赶快试试吧 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |