0

私はWebプログラミングに慣れていないので、素朴な質問を許してください。Webで検索しようとしましたが、基本的な質問に対する答えが見つかりませんでした。

サーバー側でextjs(ウィジェットとajax用)とpython(ボトル用)を使用しています。

これが私の要件です。

1つの列(編集可能)しかないextjsEditorGridがあります。インデックスルート(ボトルルート)で、このグリッドに入力されて表示されるjsonディクショナリを返します。これまでのところ、この列の値を更新し、更新された値をサーバー側に保存します。

そのため、Pythonスクリプトに別のルートを追加し、JavaScriptのajaxリクエストにURLとしてajax_replyを追加しました(以下のコード)。

今私の質問は、クライアントに応答を送信する方法です。たとえば、クライアントに失敗を送信したい(つまり、サーバーで更新が成功せず、更新が失敗したajax応答を送信したい。私のajax_replyルートですが、常に成功はクライアントで呼び出されます。

ajax_repose関数からjson応答を送信し、それに応じて動作するようにjavascriptの成功または失敗関数で再度解析する方法がわかりません。

どんな助けでも大いに活用されます

@bottle.route('/ajax_reply', method='POST')
def update_column():
    return { 'success' : False }


var grid = new Ext.grid.EditorGridPanel({
                tbar: [{ text : 'Remove' }, {text : 'Add'}],
                ds: ds,
                frame:true,
                listeners: {
                  afteredit : function(e){
                        Ext.Ajax.request({
                        url : '/ajax_reply',
                        params : {
                               action: 'update',
                                id : e.record.id,
                                field: e.field,
                                value : e.value
                        },
                        success : function(resp, opt){
                           e.record.commit();
                           Ext.Msg.alert('SUCCESS', 'success...');
                        },
                        failure: function(resp, opt){
                           Ext.Msg.alert('ERROR', 'error...');
                           e.record.reject();
                        }
                  });
                }
                },
4

1 に答える 1

1

使用している場合はExt.Ajax.request、応答を自分で解析する必要があります。サーバーがレコードを更新できないが、何らかの適切な応答を生成した場合でも

{ success: false, msg: 'Failed to save record' }
  • これはまだあなたのsuccess関数に到達します。Ajaxリクエスト自体が成功したためです。

ただし、グリッドとエディターを使用している場合は、これを行う別の方法を検討することをお勧めします。リモートストア、リーダー/ライターなどのドキュメントを確認してください。

于 2012-05-12T13:55:44.030 に答える