當前位置:編程學習大全網 - 源碼下載 - jquery easyui 自定義驗證為什麽請求2次

jquery easyui 自定義驗證為什麽請求2次

當進入頁面初始化datagrid的時候發現向後臺發送了兩次請求,獲取數據的方法執行了兩次,但我初始化datagrid的時候並沒有定義URL屬性,肯定也不會發送請求;往下代碼能發送請求的就只有$grid.datagrid("load")這壹句,最多也只會發送壹次,但事實是兩次,這是為什麽呢,難道這是easyui的壹個BUG嗎?經過斷點調試與思考,我發現datagrid在初始化的時候,即使不定義URL屬性,也會有“處理中,請稍候。。。”這樣的加載中效果(持續那麽壹瞬間),但是肯定沒有發送請求的,估計源碼中通過setTimeout來實現。問題就出在這裏了,就是在setTimeout的過程中,我下面的代碼定義了URL屬性,setTimeout後發現URL被定義了,所以照樣發送了壹個請求,然後我load了壹次,又重復發送了壹個請求。了解了這樣的原理後,我通過加入setTimeout解決了這個問題:

window.setTimeout(function(){

$.extend($grid.datagrid("options"),{

url : "ServiceData/getCountYearData.do",//這裏定義url

queryParams : { ids:cityid}//根據實際情況定義參數

});

$grid.datagrid("load");

},100);//延遲100毫秒執行

補充解決方法

html代碼中利用class聲明了datagrid,導致easyUI解析class代碼的時候先解析class聲明中的datagrid,這樣組件就請求了壹次url;然後又調用js初始化代碼請求壹次url。這樣導致了重復加載,解決的方法就是只用壹種初始化方法來聲明easyUI組件以避免重復的提交請求,即刪除html中的class聲明(class="easyui-datagrid")

/jedjj.html

  • 上一篇:加速西瓜種子發芽的五種方法
  • 下一篇:妝溯系統的功能給化妝品企業提供怎樣的作用?有人知道嗎?
  • copyright 2024編程學習大全網