(跨域问题《二》jsonp)
来源:互联网 发布:淘宝上高夫假货多吗 编辑:程序博客网 时间:2024/06/06 07:48
Jsonp(JSON with Padding) 是 json 的一种”使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
客户端代码:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>JSONP 实例</title></head><body> <div id="divCustomers"></div> <script type="text/javascript"> function callbackFunction(result, methodName) { var html = '<ul>'; for(var i = 0; i < result.length; i++) { html += '<li>' + result[i] + '</li>'; } html += '</ul>'; document.getElementById('divCustomers').innerHTML = html; }</script><script type="text/javascript" src="http://119.29.176.18/enter/jsonp.php?jsoncallback=callbackFunction"></script></body></html>
服务端代码
<?phpheader('Content-type: application/json');//获取回调函数名$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//json数据$json_data = '["customername1","customername2"]';//输出jsonp格式的数据echo $jsoncallback . "(" . $json_data . ")";?>
jQuery进行jsonp操作:
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>JSONP 实例</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script> </head><body><div id="divCustomers"></div><script>$.getJSON("http://119.29.176.18/enter/jsonp.php?jsoncallback=?", function(data) { var html = '<ul>'; for(var i = 0; i < data.length; i++) { html += '<li>' + data[i] + '</li>'; } html += '</ul>'; $('#divCustomers').html(html); });</script></body></html>
jQery会自动生成一个全局函数来替换jsoncallback=?中的问号,之后收到的数据又会自动销毁,实际上就是一个临时代理的作用,$.getJSON()方法会自动判断是否跨域,不跨域的话,就调用普通的ajax 方法;跨域的话,则会以异步加载文件的形式来调用jsonp的回调函数。
优缺点:
优点:
(1)不受同源策略限制
(2)向后兼容性更好,在更古老浏览器都可以运行,不需要XMLHttpRequest或ActiveX的支持
缺点:
(1)只支持GET请求
(2)只支持跨域http请求,不能解决不同域的两个页面如何进行js调用的问题
(3)判断jsonp的请求是否失败不 容易,大多数框架实现都是结合超时时间来判定。
0 0
- (跨域问题《二》jsonp)
- jsonp 跨域问题
- jsonp 跨域问题
- jsonp跨域问题
- JSONP跨域问题
- jsonp解决跨域问题
- 浏览器跨域问题 jsonp
- jsonp解决跨域问题
- jsonp跨域访问问题
- jsonp 跨域问题处理
- jsonp ajax跨域问题
- jsonp跨域请求问题
- jsonp跨域请求问题
- JSONP解决跨域问题
- jsonp跨域问题h5
- jsonp解决跨域问题
- jsonp解决跨域问题
- Java jsonp跨域问题
- Intent中常用的系统Action
- itoa
- dwr 推送技术
- bzoj 4579: [Usaco2016 Open]Closing the Farm (并查集+离线)
- Cent OS 7命令积累(不定期更新)
- (跨域问题《二》jsonp)
- 使用exe4j打包exe
- Opacity兼容
- 字符串输入
- 悟空CRM开源版本重置
- 步进电机与伺服电机的区别与联系
- Android串口操作,简化android-serialport-api的demo
- android分区域点击的圆饼图(区域个数比例根据数据源改变)
- Veins LTE 的基本使用