微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jsonp跨域同步问题解决思路

 
使用jsonp技术可以解决跨域,由于jsonp本身特点所以不能同步执行,也就是说如果有多个jsonp请求会异步执行,如果多个jsonp之间存在依赖关系,就必须要求顺序执行。这里提供两种解决思路:
1、在前一个jsonp返回成功后再执行第二个请求;
2、对于所有的页面的业务请求都要依赖的jsonp请求,当请求这个jsonp成功后把数据放到缓存localStorage里面,并立即刷新当前页面location.reload();如果不这样第一次展示的页面会有问题,总要手动刷新一下才会处理正常的业务请求。
针对第二种情况举个例子:
所有的请求都依赖获取所有的子系统域名jsonp请求,这个时候获取子系统域名的请求处理方法
/**
 * 获取所有交易所的的子系统域名
 */
function getSubSystemsAllExchange() {
	var subSystemsAllExchangeStr = localStorage.getItem("subSystemsAllExchange");
	if(null == subSystemsAllExchangeStr || "undefined" == subSystemsAllExchangeStr) {
		//注意第一个url要写死,需要根据不同的环境做配置
		jQuery.getJSON(getSysUrl() + "/mobile/subSystem/allSubSystems.htm?callback=?",{},function(result) {
				if(result.code == "success") {
					//debugger;
					//转换成字符串存储
					localStorage.setItem("subSystemsAllExchange",JSON.stringify(result.data));
					subSystemsAllExchangeStr = localStorage.getItem("subSystemsAllExchange");
					//document.URL=location.href;
					//请求完成后页面强制刷新,解决jsop同步问题
					location.reload();
				}
			});
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐