【问题标题】:ExtJS+django form submit success/failure issueExtJS+django表单提交成功/失败问题
【发布时间】: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.

【问题讨论】:

  • 你找到解决办法了吗?
  • 否 :( 我无法弄清楚问题的原因...

标签: ajax django forms extjs


【解决方案1】:

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

【讨论】:

  • 尝试返回 HttpResponse(content=json.dumps(response), mimetype="application/json") 和相同的结果。另外,我忘了说使用wireshark我看到带有RST标志的tcp数据包
猜你喜欢
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多