JSONP解决跨域

jsonp仅支持get请求

客户端首先封装一个jsop函数,代码如下

function jsonp (options) {
	// 创建script标签
	var script = document.createElement('script');
	// 生成随机函数名
	var fnName = 'jsonp' + Math.random().toString().replace('.', '') + new Date().getTime();
	// 为全局作用域下添加一个属性 属性的名字就是我们随机生成的函数名
	// 让属性的值指向调用jsonp函数时传递的success
	window[fnName] = options.success;
	// 参数
	var params = ''; 
	// 循环用户传递的参数
	for (var attr in options.data) {
		params += '&' + attr + '=' + options.data[attr]
	}
	// 为script标签设置src属性
	script.src = options.url + '?callback=' + fnName + params;
	// 将html标签追加到页面中
	document.body.appendChild(script);
	// 当script标签加载完成之后
	script.onload = function () {
		// 将script标签从页面中删除
		document.body.removeChild(this);
	}
}

封装之后效果跟Ajax使用差不多

jsonp({
url:'localhost:8000/user',
data:params,
success:function(res){}
)

服务器端在拿到数据后可以调用res.jsonp()方法把数据传入

app.get('localhost:8000/user',(req,res)=>{
cosnt data = {name:'张三',age:22}
res.jsonp(data)
})

这样就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值