电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP下ajax跨域的解決方案之jsonp實例分析

瀏覽:151日期:2022-09-11 10:39:37

本文實例講述了PHP下ajax跨域的解決方案之jsonp。分享給大家供大家參考,具體如下:

首先要說明一下json和jsonp的區別?

json是一種基于文本的數據交換方式,或者叫做描述數據的一種格式。

var person = { 'name': 'test', 'age': '25', 'sex': '男'};var data = [1, 2, 3, 4, 5];

而jsonp是一種非官方跨域數據交互協議,該協議允許用戶傳遞一個callback參數給服務端,然后服務端返回數據時會將這個callback參數作為函數名來包裹住json數據,這樣客戶端就可以隨意定制自己的函數來自動處理返回數據了。

比如我在a.com的網站上引用了b.com的一個b.js,但這樣跨域的引用并不會產生錯誤,說明調用js文件時不受跨域的影響。

<script type='text/javascript' src='http://www.b.com/b.js'></script>

那么我們在b.js里添加如下代碼,看看是否能夠執行

alert('I from b');

確定是可以執行。

那么如果我們在a.com上自已創建一個js函數,而在b.com下的b.js中調用,那是否可行呢?

a.com下的index.html如下:

<!DOCTYPE html><html><head> <meta charset='UTF-8'> <title></title></head><body> <script type='text/javascript'> function a(data) { alert('I from a rn' + 'data:' + data); } </script> <script type='text/javascript' src='http://www.b.com/b.js'></script></body></html>

b.com下的b.js如下:

a('from b');

上面也是可以執行的,我們可以看到在b.js中的數據確實正確的傳到了函數a中。

問題又來了,a.com中創建的函數名與b.js中調用的函數名必須一致,那么如何才能讓b.com服務端知道這個函數名,只有通過地址欄來傳遞了,加上一個callback=函數名來傳遞。當然callback這個命名可以改,但大家都這么命名,也就約定俗成了。

a.com下的index.html如下:

<!DOCTYPE html><html><head> <meta charset='UTF-8'> <title></title></head><body> <script type='text/javascript'> function a(data) { alert('uid :' + data.uid + 'name :' + data.name); } </script> <!-- 注意這里把b.js改成b.php了 --> <script type='text/javascript' src='http://www.b.com/b.php?callback=a'></script></body></html>

b.com下的b.php如下:

<?php$callback = !empty($_GET[’callback’]) ? trim($_GET[’callback’]) : ’’;if(!empty($callback)) { $data = json_encode(array( ’uid’ => 1, ’name’ => ’測試’, )); echo '{$callback}({$data});';}

上面也是可以執行的,知道了回調函數名,b.com服務端處理好數據,然后通過字符串拼接輸出。

jquery中就已經提供了jsonp的支持,a.com下的index.html如下所示:

<!DOCTYPE html><html><head> <meta charset='UTF-8'> <title></title></head><body> <div class='info'></div> <script type='text/javascript' src='http://www.b.com/jquery.js'></script> <script type='text/javascript'> $.ajax({ dataType: 'jsonp', url: 'http://www.b.com/b.php', jsonp: 'callback', success: function(data) { $('.info').text('uid:' + data.uid + ' name:' + data.name); } }); </script></body></html>

跨域策略限制情況表如下: URL 說明 允許通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允許 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夾 允許 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允許 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同協議 不允許 http://www.a.com/a.js http://127.0.0.100/b.js 域名和域名對應ip 不允許 http://www.a.com/a.js http://script.a.com/b.js 主域相同,子域不同 不允許 http://www.a.com/a.js http://a.com/b.js 同一域名,不同二級域名(同上) 不允許 http://www.a.com/a.js http://www.b.com/b.js 不同域名 不允許

更多關于PHP相關內容可查看本站專題:《PHP+ajax技巧與應用小結》、《PHP網絡編程技巧總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
主站蜘蛛池模板: 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 液压升降货梯_导轨式升降货梯厂家_升降货梯厂家-河南东圣升降设备有限公司 | 佛山商标注册_商标注册代理|专利注册申请_商标注册公司_鸿邦知识产权 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 杭州成人高考_浙江省成人高考网上报名| 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 短信群发平台_群发短信软件_短信营销-讯鸽科技 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | BAUER减速机|ROSSI-MERSEN熔断器-APTECH调压阀-上海爱泽工业设备有限公司 | 电缆接头_防水接头_电缆防水接头_防水电缆接头_上海闵彬 | 传爱自考网_传爱自学考试网| 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 瓶盖扭矩仪(扭力值检测)-百科 | 创富网-B2B网站|供求信息网|b2b平台|专业电子商务网站 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | 泡沫消防车_水罐消防车_湖北江南专用特种汽车有限公司 | 深圳富泰鑫五金_五金冲压件加工_五金配件加工_精密零件加工厂 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 |