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

时间:2011-11-08 16:23:10

标签: ajax django forms extjs

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

[...]
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。

1 个答案:

答案 0 :(得分:0)

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