为什么我的表单在Mozilla中没有正确提交,但它在IE7中有效?

时间:2009-06-15 07:40:55

标签: cakephp

我正在制作成绩单系统。我创建了一个表单,我们可以在其中添加类名,会话年份以及节的编号和名称。对于会话,我们使用了javascript datepicker。添加我正在使用ajax的部分的名称。

我的控制器类是addclasses_controller.php

<?php
    class AddclassesController extends AppController
    {
        var $name='Addclasses';
        var $helpers = array('Html', 'Javascript', 'Ajax');
        var $components = array('Auth', 'RequestHandler');
        var $uses=array('Addclass','User');


        function add()
        {
            $this->layout = 'internal';
            debug($this->data);
        }


        function addsection()
        {
            $noofsection=$this->data['Addclass']['section'];
            $this->set('noofsection',$noofsection);
        }

    }
?>

,模型类名称为addclass.php

在视图部分中,add.ctp

<table cellpadding="0" cellspacing="0" width="100%">
  <tr>
     <td colspan="3">Add Class
  </tr>
  <tr>
     <td colspan="3">
  </tr>
<?php echo $form->create('Addclass', array('url' => array('controller' => 'addclasses', 'action' => 'add'))); ?>
  <tr>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
  </tr>
  <tr>
     <td>Class Name</td>
     <td></td>
     <td><?php echo $form->text('classname',array('class' => 'users')); ?></td>
  </tr>
  <tr>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
  </tr>
  <tr>
     <td>Session Calender</td>
     <td><input type="text" name="data[Addclass][sdate]" id="AddclassSdate" size="13" datepicker="true" datepicker_format="DD/MM/YYYY"  value="<?php echo date('d/m/Y'); ?>"></td>
     <td><input type="text" name="data[Addclass][edate]" id="AddclassEdate" size="13" datepicker="true" datepicker_format="DD/MM/YYYY"  value="<?php echo date('d/m/Y'); ?>"></td>
  </tr>
  <tr>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
  </tr>
  <tr>
     <td>The Number of Section which you want to add</td>
     <td></td>
     <td><?php echo $form->text('section',array('class' =>'users')); ?></td>
  </tr>
<?php echo $ajax->observeField( 'AddclassSection',array('url' => array('controller'=>'addclasses', 'action' =>'addsection'),'frequency' => 0.2,'onChange'=>true,'update'=>'employers'));?>
  <tr>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
  </tr>
  <tr>
     <td colspan="3"><div id="employers"></div></td>
  </tr>
  <tr>
     <td colspan="3" ><?php echo $form->end('Submit');?></td>
  </tr>
</table>

addsection.ctp

<table cellpadding="0" cellspacing="0" width="80%" align="center">
<?php 
   for($i=1; $i<=$noofsection; $i++) {
      $section="AddclassSec".$i;
      $arr="sec".$i;
      $section_name ="data[Addclass][$arr]";
?>
   <tr>
      <td>Section-<?php echo $i?></td>
      <td></td>
      <td><input type="text" id="<?php echo $section ?>" value="" class="users" name="<?php echo $section_name ?>"/></td>
   </tr>
   <tr>
      <td colspan="3">&nbsp;</td>
   </tr>
<?php } ?>    
</table>

当我提交数据时,检查它然后在Mozilla中打印数据,我找不到会话日历数据或该部分的名称。但在IE7中它运行正常。为什么呢?

2 个答案:

答案 0 :(得分:1)

在add.ctp中,将$ form-&gt;创建调用移至open table标记之前,将$ form-&gt; end调用移至close表标记之后。表格中的Firefox,Ajax和表单内容的组合是有问题的。

答案 1 :(得分:0)

出于调试目的,您可以尝试简化表单。我没有检查,但你的表单中有很多表格HTML,可能会破坏它,所以它不会被提交。这是我目前唯一能想到的。