2011-05-26 23 views
0

我想知道爲什麼我的代碼沒有更新ajax調用,當我點擊一個按鈕。它只顯示頁面刷新後顯示。我下面的代碼:

下面是完整的jQuery/JavaScript代碼: $(文件)。就緒(函數(){ $( 「#savesubmainbutton」)生活( '點擊',函數(){

  $.post('save-sub-main.php', $("#submainform").serialize(), function(data) { 
       $('#submain_save_message').html(data); 
      }); 

      $('#submain').hide(); 

      // Load data after submission 
       $.get('getsubmain.php', { mainid: "<?php echo $_GET['id']; ?>" }, 
       function(data) { 
        $('.submain_message').html(data); 

       }); 



     }); 

    }); //end 

這是HTML表單部分

<div id="submain"> 

    <form id="submainform" name="submainform" method="post" action="" enctype="multipart/form-data" > 
    <table><input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> 
    <!--<tr><td width="289" align="right">Jou naam:</td><td><input type="text" name="yourname" id="yourname" style="background-color:lightblue;" /></td></tr> 
    <tr><td width="289" align="right">Jou e-posadres:</td><td><input type="text" name="email" id="email" style="background-color:lightblue;"/></td></tr>--> 
    <tr><td width="289" align="right">Naam van die geskiedkundige figuur (bv. Jan van Riebeeck):</td><td><input type="text" name="name" id="name" /></td></tr> 
    <tr><td width="289" align="right">Foto van die geskiedkundige figuur :</td><td><input id="file_upload" name="file_upload" type="file" /></td></tr> 
    <tr><td width="289" align="right"><div id="filname"></div></td><td><input id="filename2" name="image" type="hidden" value="" /></td></tr> 
    <!--<tr><td width="289" align="right">Naam van jou inskrywing :</td><td><input type="text" name="title" id="title" /></td></tr>--> 
    <tr><td width="289" align="right">Datum waarop die inskrywing gemaak is (bv. 1652):</td><td><input type="text" name="date" id="date" /></td></tr> 
    <tr><td width="289" align="right">Status update (bv. Wat sien ek daar in die verte? Is dit 'n tafel?):</td><td><textarea name="message" id="message"></textarea></td></tr> 
    <input type="hidden" name="mainid" value="<?php echo $_GET['id']; ?>" /> 
    <tr><td></td><td><div id="savesubmainbutton" style="color:blue"><input type="button" value="Save" /></div></td></tr> 
    </table> 
    </form> 

+1

不要這樣做! 'mainid:「<?php echo $ _GET ['id'];?>」'!! **從不**先使用請求參數。 – Tomalak 2011-05-26 11:20:53

+0

你可以在這裏發佈你的php/html代碼嗎(按鈕) – 2011-05-26 11:21:52

+0

你也可以發佈標記,這將有助於在你的腳本中的各種元素在某種情況下。 – Xhalent 2011-05-26 11:22:12

回答

2

記住你的Ajax調用是異步 - 所以在你得到的是E中的後一直沒有返回的數據執行 - 如圖所示更改您的代碼。

$(document).ready(function() { 

// Save SubMain data 
    $("#savesubmainbutton").live('click',function(){ 

     $.post('save-sub-main.php', $("#submainform").serialize(), function(data) { 
      $('#submain_save_message').html(data); 
      $('#submain').hide(); 

     // Load data after submission 
      $.get('getsubmain.php', { mainid: "<?php echo $_GET['id']; ?>" }, 
      function(data) { 
       $('.submain_message').html(data); 

      }); 

     }); 





    }); 

}); //結束

+0

謝謝你的幫助。真的很感謝幫助。 – 2011-05-26 11:41:19

+0

不客氣! – BonyT 2011-05-26 11:45:35

2

您的$.get未在$.post的回調中被調用。因此,$.get正在運行,但由於數據尚未提交,因此不會返回任何新數據。

如果您將$.get移到回調函數內,它應該按預期工作。

儘管不打擾第二個ajax調用會更好更高效,而只是返回$.post的返回數據中的$.get的數據。

類似於下面的內容,假設您將數據作爲json對象返回,因此您可以簡單地爲響應的兩個不同部分分配兩個變量。

$.post('save-sub-main.php', $("#submainform").serialize(), function(data) { 
     $('#submain_save_message').html(data.save_message); 
     $('#submain').hide(); 
     $('.submain_message').html(data.return_data); 
    },'json'); 
0

獲取請求可以通過瀏覽器,如果他們使用相同的參數緩存,見here瞭解更多詳情。

您可以使用POST或添加一個虛擬參數,如ticks或當前時間,這些參數會有所不同,從而不會強制GET不被緩存。

0

一些意見。如果要替換默認的提交行爲,最好確保取消點擊事件,否則表單的默認行爲將發生。

此外,帖子是異步的,所以您需要確保您想要執行的任何後續工作都在回調函數中完成。