Extjs4 1 跨域非同步請求實現

2022-08-31 21:51:20 字數 1624 閱讀 1890

extjs4.1 跨域非同步請求實現

此文由來

最近在搞乙個站點的訊息推送功能,原先乙個站點下面基於comet(ajax長連線)已經完成了功能。上線使用後發現之前的機制和原先**在乙個站點,對**的效能和後期分布式擴充套件會帶來不小的影響。最終拍拍屁股就打算把訊息機制單獨剝離出來,單獨成站點,當然資料庫還是原先的業務帳套。這個剝離第一想到的肯定是跨域ajax請求了,還好extjs4.1,對跨域已經支援。基本原理無非就是jsonp,通過新增腳步引用塊來實現。技術準備妥當,開始動手。園子裡面相關的文件也很多,大部分都是基於ext.data.store來現實的。比如:別人的東東

對於一些只是簡單的請求,其實大可不必這麼繞,下文將針對單純的非同步請求進行說明。這裡先引出今天的豬腳:ext.data.jsonp類。他分裝了大部分跨域的功能,拿來用就可以。原始碼就不黏貼了,ext自己找去:jsonp.js

前台實現

先黏貼處**:

1

//跨域請求,msgurl為其他站點位址

2ext.data.jsonp.request(,

6 callbackkey: "jsonpcallback",

7 success: function

(result) else

14},

15 failure: function

(result)

18 });

紅色標出部分是跨域請求的要點,類名:ext.data.jsonp不用多說,就是類名~!!

「jsonpcallback」該名稱將作為jsonp請求的方法名傳遞到伺服器端,獲取該請求的url:

可以發現該名稱的意義了吧,當然在後台實現過程也會用到該值,當然取值隨意,前後臺統一就好。

後台實現(asp.net mvc4)

按照慣例,先黏**:

1

///2

///客戶端註冊

3///

4///

5public

void initializecomet(string loginid, string

jsonpcallback)614

catch

(exception ex)

1518

19this.response.write(jsonpcallback + "

(" + newtonsoft.json.jsonconvert.serializeobject(commonajax) + ")"

);20 }

發現引數了吧,傳過來的值還得按照呼叫js的形式返還回去,格式比如 jsonpcallback("我要返還值給客戶端")

客戶端接到請求的串後,其實ext.data.jsonp為我們進行的中轉,直接把我們返會的東西帶進了方法:success: function(result)裡面。具體看原始碼。

那麼大致的實現就完成了!~

還是按照慣例,不放全部原始碼了,都是籤了保密協議的人,公司原始碼不可亂上傳。

CORS 跨域請求實現

什麼是cors?cors是乙個w3c標準,全稱是 跨域資源共享 cross origin resource sharing 它允許瀏覽器向跨源伺服器,發出xmlhttprequest請求,從而克服了ajax只能同源使用的限制。什麼是跨域?下面是乙個dva springboot 實現的跨域請求處理,直...

jQuery實現跨域請求例項

首先準備兩個專案做測試 jsonp1,jsonp2 def ajax request callbacks request.get.get callbacks get到的值為發起跨域請求的 傳過來的 print func name callbacks import json print 可以 走到 這...

ajax跨域請求例項

客戶端js 服務端 1 string callbackfunname context.request callbackparam 2 context.response.write callbackfunname ps 客戶端的jsonp引數是用來通過url傳參,傳遞jsonpcallback引數的引...