2011-11-08 67 views
2

我有一個問題與形式的回調在客戶端處理提交代碼的時候是:ExtJS的+ Django表單提交成功/失敗的問題

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

無:( 我不能找出問題的原因...... – user1035942

回答

0

嘗試在您的視圖函數中設置mimetype =「application/json」

+0

試圖與 返回的HttpResponse(含量= json.dumps(響應),MIME類型=「應用/ JSON」) 和相同的結果。另外,我忘了用wireshark說我看到帶有RST標誌的TCP包 – user1035942