2012-11-23 27 views
0

我在寫這個偉大的應用程序。這是我第一次嘗試編寫完整的AJAX應用程序,它只在另一面使用了Restful商店。nodejs中的服務器端存儲(要在Dojo中使用)

現在...我寫了一些代碼,到目前爲止,我只需要使用GET進行簡單的查詢。但是,爲了保持一切整潔,我確信,我有一個「協議」到位:每個請求曾在格式的響應:

{↵ "ack": "ERROR", "message": "required filter not passed",↵ "errors": { "name": "parameter required"↵ } }

如果有錯誤(在這種情況下,我要求用戶設置一個過濾器)。

現在...如果GET 的工作,我也有一個「數據」字段,這樣的結果是這樣的:

{↵ "ack": "OK", "data": { ... } }

現在我有道場的問題,因爲例如dgrid需要返回對象的「根」(也就是說)數據,而不是「數據」鍵。

可能的解決方案:

1)破解我JsonRest文件(它已經有點不同,我加了超時等,它意味着是畢竟是一個樣板),因此,對於「查詢」,它實際上操縱與結果然後(),並返回原始數據

2)改變我的協議,因此,如果HTTP狀態爲200,因爲沒有錯誤消息或任何給出,它簡單地返回數據

3)以某種方式說服所有的小部件在查詢後返回的JSON的「數據」部分中使用東西(這似乎是高度不太可能)。

我該走哪條路?一方面,我喜歡這個協議始終遵循相同的格式(儘管我承認它沒用)。另一方面,改變JsonRest似乎很容易。但話又說回來,第三方的API可能不喜歡不必從返回對象的「數據」鍵撈出數據...

什麼是理智的事情來這裏做什麼?

謝謝!

Merc。

回答

0

我還沒有試過這個,但是文檔指出如果JsonRest查詢生成一個HTTP錯誤代碼,那麼xhr錯誤對象將一直傳遞到dgrid,並且是與dgrid相關的數據之一 - 錯誤事件。

dgrid core components
dgrid issue mentioning query errors

如果工作正常,那麼我會用液2去,因爲它需要至少修改標準組件和僅使用所提供的API。

+0

接受答案 - 謝謝摩根。其實,我結束了去(1),因爲它只是讓很多具有相同的協議,每一次感覺... – Merc

相關問題