好久沒寫東西了,自我檢討一下,寫不完這篇不下班!!
最近在做一個項目模塊通用的分享功能插件,由于各個模塊調(diào)用所以會出現(xiàn)跨域問題,正好之前同事解決過,于是自己親身實踐把這次解決問題的經(jīng)歷記錄下來。閑言少敘,書歸正傳~
首先,項目背景,一個基于jquery的分享插件開發(fā),自己也是嘗試著寫這么個東西,第一次寫,質(zhì)量肯定差,下次博文把這次開發(fā)經(jīng)歷寫出來。由于這次解決ajax跨域的方法很簡單,我就粘貼代碼簡單說明一下。
第一步:編寫后臺程序,MVC下代碼如下:
//這是一個獲取某個用戶的通訊錄分組方法 public ContentResult GetContactGroup(int? UserID) { var list = addressBook.GetContactGroup(UserID); return CallbackApi(list); } //將list轉(zhuǎn)換為Json格式 private ContentResult CallbackApi(object data, bool isJson = false) { string callback = Request.QueryString["callback"]; return Content(string.Format("{0}({1})", callback, isJson ? data : serializer.Serialize(data), "text/plain", System.Text.Encoding.UTF8)); }
好,上述代碼很簡單,下面看一下前端代碼:
$.getJSON("http://xxxxx/shareresource/GetContactGroup?UserID=" + this.userid + "&callback=?", function (data) { //自己的業(yè)務(wù)處理});
代碼很簡單,就是用Jquery的 getJSON方法,傳參數(shù)把callback傳過去,程序運行結(jié)果如下:
那么,這樣 function(data)就相當于執(zhí)行這個方法了。然后做data處理就OK了,是不是很簡單啊。
總結(jié):1.前提是兩個域名的項目都是自己的,這樣可以做callback參數(shù)傳參和接收。
附錄:插件效果
插件域名:xyyresource.app.XXX.cn(涉及公司項目保密,暫不透漏)
調(diào)用地址 http://localhost:4081/#
實現(xiàn)了跨域名調(diào)用,那么效果如下:
紅框內(nèi)的數(shù)據(jù)均是從另一個域名通過跨域讀取讀來的,那么這樣的話,只要把插件js引用上,任何域名都可以使用這個插件,這樣就實現(xiàn)了插件共享效果了。并且可維護性增強。下一期,我將把分享插件開發(fā)過程記錄下來。就寫到這吧,雖然沒人看,但還是對自己的總結(jié)。繼續(xù)加油!!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。