Ajax ExtJS+;django表单提交成功/失败问题
我在处理表单提交的回调时遇到问题,客户端的代码是:Ajax ExtJS+;django表单提交成功/失败问题,ajax,django,forms,extjs,Ajax,Django,Forms,Extjs,我在处理表单提交的回调时遇到问题,客户端的代码是: [...] buttons: [{ text: 'submit', formBind: true, handler: function(){ formPanel.getForm().submit({ url: this.actionUrl, waitMsg: TR['formdialog.messages.saving'], success: fun
[...]
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中我看到一个“中止”状态。如果我在success和failure中设置断点,那么执行似乎不会通过这两个断点:S(还有其他可能的情况吗?)
当尝试使用Chrome 7.0.517.44时,执行似乎成功(这是正确的),但action.response也是空的,并且控制台反映“加载资源失败”(尽管在服务器控制台中正确打印了响应)
更新:通过HttpFox,我可以看到NS_ERROR_NET_RESET(以及wireshark,我可以看到服务器发送带有RST标志的数据包),但我不知道这种行为的原因:S.尝试在视图函数中设置mimetype=“application/json”尝试设置mimetype=“application/json”在视图中,使用return-HttpResponse(content=json.dumps(response),mimetype=“application/json”)尝试函数,结果相同。另外,我忘了说,在wireshark中,我看到带有RST标志的tcp数据包尝试了返回HttpResponse(content=json.dumps(response),mimetype=“application/json”)和相同的结果。另外,我忘了说,我看到wireshark的tcp数据包带有RST标志,你找到解决方案了吗?否:(我无法找出问题的原因…你找到解决方案了吗?)否:(我无法找出问题的原因。。。