2012-08-05 123 views
2

有沒有一種方法可以利用ExtJS的閱讀器,寫作器,請求等功能,而無需存儲?就像通用的Ajax請求一樣?我希望能夠定義可以接受我在應用程序的服務器響應中使用的「數據結構」的閱讀器,並在全球範圍內執行功能。例如,如果在任何時候服務器出現錯誤,則可以有一個特定的應用程序代碼,讀者可以使用該錯誤消息解釋並創建一個窗口對話框。使用ExtJS閱讀器和沒有數據存儲的作家

回答

1

Reader和Writer實際上是Proxies的配置,爲此它有一個Ajax版本。您不必擁有一個商店來使用代理 - 您可以在沒有商店的情況下手動使用代理。

商店用於鏈接模型與從服務器/本地存儲裝載的一組記錄。它們也大量用於網格,樹木,數據視圖等。但是如果你堅持不使用它們 - 你可能會這樣做。

至於問題的第二部分 - 無論您選擇哪種類型的服務器通信(Ajax/Rest/Direct),都有辦法從服務器捕獲異常。對於某些人來說,它比其他人更棘手(關於Ajax可能出現的問題,請參閱thread)。如果你仔細研究一下ExtJS庫代碼,儘管所有這些都可以很容易地解決。在我的情況,我利用直接和類似於以下(以申請launch())的東西引起了幾乎所有的服務器的問題(你只需要確保你的服務器引發異常):

Ext.direct.Manager.on('exception', function(e, provide, eOpts) { 
     Ext.MessageBox.alert('Server Error', e.message); 
    }); 

做類似的事情使用AJAX,您將擁有:

Ext.Ajax.on('requestcomplete', function(iConn, iResponse, iOptions, ieOpts){ 
    // do something with iResponse here  
}); 
+0

我說的不僅僅是例外。例如,假設服務器發送一個類型代碼534,它應該告訴客戶端提示用戶輸入以前請求的授權代碼。 – LordZardeck 2012-08-05 22:33:22

+0

原諒我使用PHP和Direct,所以我可能不會完全知道這是怎麼發生的 - 你說'服務器發送'是什麼意思? – Izhaki 2012-08-05 23:38:29

+0

我的意思是在AJAX響應中。請參閱此問題中的回覆:http://stackoverflow.com/questions/11787754/what-to-call-application-data-protocol-data-format-api – LordZardeck 2012-08-06 00:19:45