2011-12-21 36 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