本文主要介绍了JSONP的原理、理解和实例,并结合实例分析了JSONP的基本概念、原理、理解和使用技巧。有需要的可以参考一下。
本文介绍了JSONP的原理、理解和实例。分享给你,供你参考,如下:
1.什么是jsonp
1.1同源策略
由于浏览器同源策略的限制,XmlHttpRequest只允许请求当前源的资源(相同的域名、协议、端口)。
-1)jsonp只支持get请求。
-2)不受同源策略限制,兼容性好。它不需要XMLHttpRequest(ActiveX)支持,通过js回调函数返回结果。
-3)无法解决不同域的两个页面之间的js调用问题
2. jsonp 原理
动态添加一个脚本标签,在get链接上发送回调函数名给服务器,获取回调函数名。此函数名返回的js函数(汇编函数)的json数据作为函数的实际参数传入。返回的数据是JS函数在前端调用回调函数(json数据传入)执行回调函数。
3.实例
先说服务器要返回的数据表单,如下图。php thinphp框架写的访问URL是
http://91hx.xicp.cn:8989/Service/Validata/testJsonP?callback后面的名字=jsonpCallback callback要传到服务器后端,组装成一个js回调函数,这样前端的json数据就会作为回调函数的参数传入来获取数据。
公共函数testJsonP(){
$ JSON name=I( get . callback );//获取URL上的回调名,即获取jsonpCallback
$a=[name=张三,sex=男,msg=成功返回!];//数据数组
$ JSON=JSON _ encode($ a);//转换为json数据
echo $jsonname。(.$json。);;//正确的格式应该是jsonp回调({name: u5f20 u4e09 , sex: u7537 , msg : u8fd 4 u56de u 6210 u529f uff 01 )不要忘记分号;这是一个返回的js函数。前台必须有这个函数名。
}
提示:上面的关联数组$a=array( msg=成功返回!)
访问URL http://localhost:63343/H5/jsonp . html动态添加脚本标签,调用src中的回调函数jsonpCallback()。callback=jsonpCallback的名字就是jsoncallback的名字。
!文档类型html
超文本标记语言
头部语言
meta charset=UTF-8
标题/标题
/头
身体
脚本类型=文本/javascript
函数jsoncallback(date){
console.log(日期);
警报(日期);
alert(date . msg);
}
var script=document . createelement( script );
script . src= http://91 hx . xicp . cn:8989/Service/Validata/test jsonp?callback=jsoncallback ;
document . body . insert before(script,document . body . first child);
/脚本
/body
/html
我们可以在浏览器中使用Google here直接检查数据访问是否正确,切换到网络选项卡就可以看到生成的访问地址,点击然后
如下图,点击左边的链接切换到响应,可以看到响应的数据。应该和前端写的函数名一致。里面的json数据就是那个函数的参数。别忘了有分号。
我们在前端有Console.log数据,我们还可以查看它并切换到Console选项卡。
对更多JavaScript相关内容感兴趣的读者可以查看我们的专题:《JavaScript中ajax操作技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》和《JavaScript数学运算用法总结》。
希望这篇文章对大家的JavaScript编程有所帮助。