2011-06-03 244 views
13

如何在EXT JS中創建同步ajax請求?EXT Js同步ajax請求

例如,給定的代碼:

test1(); 
ajaxRequest(); //Ajax Request 
test2(); 

的TEST2功能,甚至沒有整理ajaxRequest()執行,其具有Ext.Ajax.request呼叫執行。

如何在ajaxRequest()函數執行後才能使text2()執行?

據我所知,一種做法是在回調中調用test2函數,但我有一些依賴關係和大量必須在ajax請求之後以同步方式執行的代碼。你能幫我解決最好的解決方案嗎?

回答

24

我需要類似的東西,看的Ext.Ajax.request()Ext.data.Connection源代碼之後的工作,我發現他們檢查一個async屬性,在request()的方法,因此,它實際上是可以進行同步請求,就像這樣:

var response = Ext.Ajax.request({ 
    async: false, 
    url: 'service/url' 
}); 
var items = Ext.decode(response.responseText); 

看來這async屬性沒有記載,所以......當然......要知道,它可能在未來的版本中發生變化

+2

5.0版本中的Ext.Ajax.request現在記錄了異步屬性。請參閱docs.sencha.com/extjs/5.0/apidocs/#!/api/Ext.Ajax – dansalmo 2014-08-22 15:46:15

+0

for 3.4我沒有發現異步使用 – 2017-02-07 12:06:26

5

ExtJS不提供開箱即用的同步請求功能。事實上,他們強烈不鼓勵使用它們。

您可能會發現following討論有幫助。

+1

這是2007年的討論。 – Meredith 2013-07-31 01:34:30

+1

5.0版本中的Ext.Ajax.request記錄了異步屬性。請參閱http://docs.sencha.com/extjs/5.0/apidocs/#!/api/Ext.Ajax – dansalmo 2014-08-22 15:45:53

11

Extjs.Ajax每個AJAX調用會導致三種類型的回調函數之一:

  • success運行,如果AJAX調用創建成功,並得到,如果AJAX調用失敗運行響應
  • failure獲得運行後AJAX調用得到響應的響應
  • callback

如果要執行test2();您的Ajax請求完成後,
然後把你的test2功能的successfailurecallback函數內;無論你選擇哪一個取決於你...

更多關於successfailure函數可以找到here

test1(); 
Ext.Ajax.request({ 
    url: 'page.php', 
    params: { 
     id: 1 
    }, 
    // scope: this, // you can set the scope too 
    callback: function(opt,success,respon){ 
     test2(); 
    } 
}); 

注意:此方法不適用於ExtJS的3