Internship25




//								   jsonp=jsonpCallback						&data{}	(&param)				
// http://chen.com/day05/data2.php?cb=jQuery331021597226106099243_1573093100115&a=1
function ajax(obj) {
	//obj 参数对象

	//定义默认参数
	var defaults = {
		url: "#",
		type: "get",
		dataType: "jsonp",
		data: {},
		success:function(data) {
			console.log(data);
		}
	}

	//传参去覆盖默认参数
	for (var value in obj) {
		defaults[value] = obj[value];
	}

	//定义默认回调函数的名称
	//"jQuery" + ( version + Math.random() ).replace( /\D/g, "" )
	var version = '3.3.1';
	var cbName = "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ) + '_' + (new Date().getTime());
	/*
		getTime  返回1970.1.1至今的毫秒数
		getDay	 返回一周中的某一天   0-6
		getDate	 返回一月中的某一天   1-31
	*/
	//判断参数中是否包含回调函数名称  若有则覆盖  若无则使用默认值
	if (defaults.jsonpCallback) {
		
			//  ?cb=jQuery12122112121221
			// dataType:  xml(responseXML) text html js json jsonp:完成跨域请求(responseText)
			// jsonp:  参数名 也就是cb
			// jsonpCallback:  参数值  也就是jQuery12122112121221

		
		cbName = defaults.jsonpCallback;
	}

	//定义参数

	//https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/
	//su?cb=jQuery331035550074660633935_1573090627210&wd=%E6%88%98%E5%9C%B0&_=1573090627211
	var param = '';
	for(var attr in defaults.data) {
		param += attr + '=' + defaults.data[attr] + "&";
	}
	if (param) {
		//substring(参数1,参数2)    参数1 起始索引(取的到)  参数2 结束索引(取不到) 
		param =  param.substring(0, param.length - 1);
		param = "&" + param;
	}

	//声明回调函数    调用方式 服务器响应调用   
	//把函数声明放置到window对象中  向window添加了一个方法   方法名称是cbName
	window[cbName] = function(data) {
		defaults.success(data);
	}

	// jsonp的原理 就是动态创建script标签
	var script = document.createElement("script");
	script.src = defaults.url + "?" + defaults.jsonp + "=" + cbName + param;
	var head = document.getElementsByTagName('head')[0];
	head.appendChild(script);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值