我在处理表单提交的回调时遇到问题,客户端的代码是:
[...]
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,可以在网络选项卡,服务器请求和控制台(使用runserver运行服务器)中查看,我可以看到响应的打印。但是,action.response是空的,在Firebug中我看到“Aborted”状态。如果我在成功和失败中设置断点,那么执行似乎都没有通过它们:S(还有其他可能的情况吗?)。
尝试使用Chrome 7.0.517.44时,执行似乎成功(这是正确的)但action.response也是空的,控制台反映“无法加载资源”(尽管在服务器控制台中正确打印了响应)。
更新:使用HttpFox,我可以看到一个NS_ERROR_NET_RESET(和wireshark一样,我可以看到服务器发送了一个带有RST标志的数据包),但我不知道是什么原因造成的。这个行为:S。
答案 0 :(得分:0)
尝试在视图函数中设置mimetype =“application / json”