0

我是网络编程新手,所以请原谅我的幼稚问题,我尝试在网络上搜索,但找不到我的基本问题的答案。

我在服务器端使用 extjs(用于小部件和 ajax)和 python(使用瓶子)。

这是我的要求。

我有 extjs EditorGrid,它只有一列(可编辑)。在索引路由(瓶子路由)上,我返回填充在此网格中并显示的 json 字典,到目前为止,一切都很好,现在我想更新此列的值并将更新的值保存在服务器端。

所以我在我的 python 脚本上添加了另一条路由,并将 ajax_reply 作为 url 到我在 javascript 上的 ajax 请求(代码如下)。

现在我的问题是我如何向客户端发送响应,例如我想向客户端发送失败消息(即更新在服务器上不成功,我想发送更新失败的 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 回答