2010-03-21 49 views
0

我有一個使用jQuery選項卡的頁面。在我的其中一個選項卡中,我有一個包含表單(最初隱藏)的div,我想用它將內容添加到選項卡。我在Chrome,Firefox和Safari中完美工作。但是,在IE 7中,標籤不會刷新。這篇文章的作品和數據被添加到數據庫中,但它在提交後不會顯示新內容。jQuery不刷新IE中的標籤內容

我不認爲它很重要 - 但是,僅供參考,我也使用Codeigniter PHP框架。

這裏是我的javascript:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     // initialize the addChild form as hidden until user requests it open 
     $('#addChild').hide(); 

     // open the form 
     $('#openDialog').click(function(){ 
      $('#addChild').slideToggle(); 
      return false; 
     }); 

     // close the form 
     $('#closeDialog').click(function(){ 
      $('#addChild').slideToggle(); 
      return false; 
     }); 

     // submit the form 
     $('#frmAddChild').submit(function(){ 
     $('#addChild').slideToggle(); 

     $.ajax({ 
      url: '/children/add', 
      type: 'POST', 
      data: $('#frmAddChild').serialize() 
      //cache: false 
     }); 
     //reload the children tab 
     $('#tabs').tabs('load',3); 
     return false; 
     }); 

    }); 

    </script> 

而且,這裏是我的PHP/HTML:

<?php 
    // initialize the elements of the form 
    $frmAddChild = array(
     'name' => 'frmAddChild', 
     'id' => 'frmAddChild', 
     'method' => 'post' 
    ); 

    $child_name = array(
     'name' => 'child_name', 
     'id' => 'child_name', 
       ); 
    $child_dob = array(
     'name' => 'child_dob', 
     'id' => 'child_dob' 
    ); 
    $btnOpenDialog = array(
     'name' => 'openDialog', 
     'id' => 'openDialog', 
     'value' => 'true', 
     'content' => 'Add Child' 
    ); 
    $btnCloseDialog = array(
     'name' => 'closeDialog', 
     'id' => 'closeDialog', 
     'value' => 'true', 
     'content' => 'Cancel' 
    ); 
    // button that shows the drop down to add 
    echo form_button($btnOpenDialog); 
?> 

<div id="addChild" title="Add Child"> 
    <?php echo form_open('children/add/',$frmAddChild); ?> 
    <table> 
     <tr> 
      <td> 
       <?php echo form_label('Child\'s Name', 'child_name'); ?>: 
      </td> 
      <td> 
       <?php echo form_input($child_name); ?> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <?php echo form_label('Date of Birth','child_dob'); ?>: 
      </td> 
      <td> 
       <?php echo form_input($child_dob); ?> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2" align="right"> 
       <?php echo form_submit('submit', 'Add'); ?> 
       <?php echo form_button($btnCloseDialog); ?> 
      </td> 
     </tr> 
    </table> 
    <?php echo form_close(); ?> 
</div> 

沒有人有任何想法如何,我能得到這個在IE中正常工作?此外,如果任何人對我的結構有何評論,請告訴我。我是Codeigniter的新手,我決不是JavaScript或jQuery專家。

感謝您的幫助!

回答

2

我想你應該展開.ajax,並在AJAX調用中添加一個.success和.error狀態。請參閱本:

http://api.jquery.com/category/ajax/

添加,隨着AJAX過程的一部分,因爲現在它看起來像點擊提交將隱藏表單並重新加載,即使有一個錯誤的標籤。

試試看,並刪除返回false,看看會發生什麼。

+0

謝謝Kevin!我接受了您的建議併爲我的AJAX調用設置了.success和.error狀態。這些使我的腳本以更可預測的方式行事。 雖然,我曾經遇到過的問題是IE緩存頁面。我在這裏找到了解決方案:http://codeigniter.com/forums/viewthread/143583/ 再次感謝! – iddimu 2010-03-22 04:14:03