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表单提交成功/失败问题的主要内容,如果未能解决你的问题,请参考以下文章