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();
				}
			});
	}
}


猜你喜欢

转载自blog.csdn.net/renzhehongyi/article/details/69681242
今日推荐