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

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...