0

私はこの素晴らしいアプリケーションを書いています。反対側の Restful ストアのみを使用する 1 ページの完全な AJAX アプリケーションを作成するのは、私の最初の試みです。

さて... コードの一部を書きましたが、ここまでは GET を使用した単純なクエリしか必要ありませんでした。ただし、すべてをきちんと保つために、「プロトコル」を用意するようにしました。各リクエストには次の形式の応答がありました。

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

エラーが発生した場合 (この場合、ユーザーにフィルターを設定するように要求します)。

今... GET機能する場合、結果が次のようになるように「データ」フィールドもあります。

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

たとえば、dgrid は「データ」キーではなく、返されたオブジェクトの「ルート」(いわば) にデータを期待しているため、Dojo で問題が発生しています。

可能な解決策:

1)JsonRestファイルをハックします(すでに少し異なります。タイムアウトなどを追加しました。結局、ボイラープレートになることを意図しています)。これにより、「クエリ」の場合、実際にthen()で結果を操作し、生データを返します

2) プロトコルを変更して、HTTP ステータスが 200 の場合、エラー メッセージや出力するものがないため、単純にデータを返すようにします。

3) クエリの後に返された JSON の「データ」部分にあるものを使用するように、何らかの方法ですべてのウィジェットを納得させます (これは非常にありそうもないことです)。

どちらに行けばいいですか?一方では、プロトコルが常に同じフォーマットに従っているという事実が気に入っています (それが役に立たないことは認めますが)。一方、JsonRest の変更は簡単に思えます。しかし、再び、サードパーティの API は、返されたオブジェクトの「データ」キーからデータを取得する必要があることを好まない場合があります...

ここで何をするのが正気ですか?

ありがとう!

メルク。

4

1 に答える 1

0

私はこれを試していませんが、ドキュメントには、JsonRestクエリがHTTPエラーコードを生成した場合、xhrエラーオブジェクトがdgridまで渡され、dgrid-errorイベントに関連付けられたデータの1つであることが示されています。

dgridコアコンポーネント
dgridのクエリエラーに関する問題

それが正しく機能する場合は、ソリューション2を使用します。これは、標準コンポーネントへの変更が最小限で済み、提供されているAPIのみを使用するためです。

于 2012-11-30T09:33:43.627 に答える