ExtJS+django表单提交成功/失败问题

Posted

技术标签:

【中文标题】ExtJS+django表单提交成功/失败问题【英文标题】:ExtJS+django form submit success/failure issue 【发布时间】:2011-12-24 14:50:27 【问题描述】:

我在处理表单提交的回调时遇到问题,客户端的代码是:

[...]
buttons: [
    text: 'submit',
    formBind: true,
    handler: function()
         formPanel.getForm().submit(
         url: this.actionUrl,
         waitMsg: TR['formdialog.messages.saving'],
         success: function(form, action) 
             this.close();
         ,
         failure: function(form, action) 
             if(action.failureType == Ext.form.Action.CLIENT_INVALID) 
                 Ext.Msg.alert('Failure', 'Client invalid');
             else if(action.failureType == Ext.form.Action.CONNECT_FAILURE)
                 Ext.Msg.alert('Failure', 'Connect failure');
             else if(action.failureType == Ext.form.Action.SERVER_INVALID)
                 Ext.Msg.alert('Failure', 'Server invalid');
             else
                 Ext.Msg.alert('Failure', action.result.msg);
             
         
         [...]

在服务器端,代码很简单:

response = 'success':True, 'msg': 'Everything went better than expected'
print response
return HttpResponse(content=json.dumps(response))

在尝试使用 Firefox 3.6.17 时,该表单仍会显示等待消息并且什么也不做。使用 Firebug 1.7.2,可以在 net 选项卡、服务器请求和控制台(使用 runserver 运行服务器)中看到响应的打印。但是,action.response 是空的,在 Firebug 中我看到“中止”状态。如果我在成功和失败中设置断点,似乎执行都没有通过它们:S(还有其他可能的情况吗?)。

尝试使用 Chrome 7.0.517.44 时,执行似乎成功(这是正确的),但 action.response 也是空的,控制台反映“加载资源失败”(尽管在服务器控制台中正确打印了响应)。

更新:使用 HttpFox 我可以看到一个 NS_ERROR_NET_RESET(以及使用 wireshark 我可以看到服务器发送了一个带有 RST 标志的数据包),但我不知道原因这种行为:S.

【问题讨论】:

你找到解决办法了吗? 否 :( 我无法弄清楚问题的原因... 【参考方案1】:

尝试在视图函数中设置 mimetype="application/json"

【讨论】:

尝试返回 HttpResponse(content=json.dumps(response), mimetype="application/json") 和相同的结果。另外,我忘了说使用wireshark我看到带有RST标志的tcp数据包

以上是关于ExtJS+django表单提交成功/失败问题的主要内容,如果未能解决你的问题,请参考以下文章

django表单提交后如何用弹框提示成功?

如果 django 表单提交失败,则运行 javascript

分针网—每日分享:ajax提交表单

未调用 ExtJS 成功操作

ExtJS 4 使用模型代理提交表单

Django使用普通表单Form以及modelForm操作数据库方式总结