JSONP方式解决跨域

Script标签的src属性不受同源策略的限制而完成跨域操作的一门技巧

且该方法只适用于get请求传值,对于post请求则无法完成。

(function(w){
	w.lufei = {};
	w.lufei.jsonp = function(obj){
		var defaults = {
			url:"#",
			data:{},
			type:"get",
			jsonp:"callback",
			jsonpCallback:"hehe",
			success:function(data){
				console.log(data);
			}
		};
		for(var key in obj){
			defaults[key] = obj[key];
		}
		var params = "";
		for(var attr in defaults.data){
			params +=attr+"="+defaults.data[attr]+"&";
		}
		if(params){
			params = params.substring(0,params.length-1);
		}
		defaults.url +="?"+params;
		defaults.url +="&"+defaults.jsonp+"="+defaults.jsonpCallback;

		var script =document.createElement("script");
		script.src = defaults.url;
		window[defaults.jsonpCallback] = function(data){
			defaults.success(data);
		};

		var head = document.querySelector("head");
		head.appendChild(script);

	}


})(window)

  

posted @ 2020-01-16 15:29  路飞910  阅读(139)  评论(0编辑  收藏  举报