2011-12-21 95 views
1

我現在用ExtJS工作了一段時間,從未遇到提交表單的問題。但現在有一種表單不會對PHP文件進行POST調用。並且正在讓我失敗。用ExtJS提交表單的問題

onSaveBtn : function() { 
    var formPanel = this.getComponent('planillaForm'); 

    if (formPanel.getForm().isValid()) { 
     var vals = formPanel.getValues(); 

     var msg = String.format(
      this.msgs.saving, 
      vals.codigo 
      ); 

     this.el.mask(msg, 'x-mask-loading'); 

     formPanel.getForm().submit({ 
      url  : 'sistema/planilla/setPlanilla.php', 
      scope : this, 
      success : this.onFormSaveSuccess, 
      failure : this.onFormSaveFailure 
     }); 
    } 
    else { 
     Ext.MessageBox.alert(
      'Error!', 
      this.msgs.errorsInForm 
      ); 
    } 
} 

我一直使用這個「模板」的表單提交,它從來沒有失敗。我不知道發生了什麼,但他從來沒有發佈POST,並跳轉到失敗函數「onFormSaveFailure」。我改變了網址,沒有任何東西。我不知道該怎麼做,我有點匆忙。請幫忙。

回答

1

可能有許多事情正在發生。您將需要進一步調試它。這些步驟,我會做:

  1. 確保URL是有效的。我會用小提琴手(或類似的程序)來看我的要求。確保我嘗試提交的網址有效。可能存在的問題是,您正在爲您的網址使用相對路徑,它使用當前網址作爲上下文。

  2. 確保php文件正在被擊中(斷點,打印語句...)。

  3. 確保php文件沒有崩潰,從服務器端拋出的異常會導致失敗函數被調用。

  4. 確保php文件正在返回指示成功的內容。如果返回的JSON字符串包含{success:false},則該請求將被視爲失敗。

  5. this.onFormSaveFailure函數需要2個參數:「form」和「action」,「action」對象有一個「failureType」,使用javascript調試器來查看它的值。

+0

ajax調用沒有對php文件進行POST。我很確定,因爲我可以看到何時使用螢火蟲進行調用,即使文件不存在。奇怪的是,它使Ajax調用,但沒有文件加載,它跳轉到故障功能。 – daniel 2011-12-21 12:07:55

+0

你有一個JavaScript調試器?故障功能內的failureType是什麼? – Chao 2011-12-21 16:34:10

+0

它不會產生一個javascript異常。它跳轉到Ajax提交的失敗函數,就好像服務器端代碼已經返回「success:false」一樣。如果提交表單時出現問題,它會跳轉到:else {Ext.MessageBox.alert('Error!',this.msgs.errorsInForm); } – daniel 2011-12-21 17:54:34