1. 程式人生 > >jsonp跨域同步問題解決思路

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