Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jsonp大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

个人简单记录积累学习

同源策略

  • 现在所有@L_673_2@javascript的浏览器多会使用这个策略
  • 同源指域名协议端口相同
但是随着web应用的扩张,以及各大网站直接的内嵌合作,需要我们有的时候去跨域进行数据的抓取和页面资源的操作(图片的访问等等)
JSONP-- JSON with Padding
  1. 什么是jsonp
jsonp是一个 非官方的协议,它允许在服务器端 集成script tags返回至客户端,通过 javascript callBACk的形式去实现跨域。
2. 简单说
域A的页面pageA1加载域B的数据,在域B的页面pageB1以javascript的形式 声明需要的数据
然后在域pageA1用 script标签把PageB1 加载进来,那么pageB的脚本就会得以执行。
JSONP在此基础上加入 回调函数,pageB1加载完之后会执行pageA1中定义的函数,所需要的数据会以 参数的形式传递给改函数
3. JSONP服务 ----Remote JSON service
一种带有附加功能的web服务,该功能@L_673_2@在特定于用户函数调用中打包返回JSON数据
这种方法依赖于 接受回调函数名作为请求参数的远程服务。然后该服务 生成对该函数调用,将JSON数据作为参数传递,在到达客户端时将其插入Web页面并开始执行。
4. 缺点
安全隐患比较多,第三方的脚本随意执行,可能对敏感数据上会有影响。
5. jQuery的JSONP@L_673_2@
/*1.4.2版本代码
*/
getJSON:function(url,data,callBACk){
     return jQuery.get(url,callBACk,"json");
}

get:function(url,data.callBACk,typE){
     if(jQuery.isFunction(data)){
            type =type || callBACk;
            callBACk = data;
            data = null;
    }
     return jQuery.ajax({
            type:"GET",url:url,data:data,success:callBACk,dataType:type
     });
}

ajax:function(origSELEcTings){
      var s = jQuery.extend(true,{},jQuery.ajaxSetTings,origSELEcTings);
      var jsonp,status,callBACkContext = origSetTings &&origSetTings.context || s,type = s.type.toUpperCase();
      // Handle JSONP Parameter CallBACks
		if ( s.dataType === "jsonp" ) {
			if ( type === "GET" ) {
				if ( !jsre.test( S.Url ) ) {
					S.Url += (rquery.test( S.Url ) ? "&" : "?") + (s.jsonp || "callBACk") + "=?";
				}
			} else if ( !s.data || !jsre.test(s.data) ) {
				s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callBACk") + "=?";
			}
			s.dataType = "json";
		} 
}
//使用?作为回调函数名,而非真实的函数名,jQuery会自动生成函数名。

jQuery.getJSON("*****?id=1&callBACk=?",function(data){
    console.log("Data is"+data.id)
});

大佬总结

以上是大佬教程为你收集整理的jsonp全部内容,希望文章能够帮你解决jsonp所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:jsonp