2013-04-29 61 views
0

我有一個表單,可以使用Ajax提交一次。因爲迴應也是一種形式,它取代了舊的。但是,當我然後按提交按鈕表單不提交與Ajax和正常的方法。爲什麼? 這裏我jQuery的代碼:使用JQuery Ajax提交表單幾次,無需重新加載頁面

<script> 
    $(document).ready(function() { 
     $('#ajax_form').submit(function(e) { 
      var form = $('#ajax_form'); 
      var data = form.serialize(); 
      $.post('game/write.php', data, function(response) { 
       console.log(response); 
       $('#power').replaceWith(response); 
      }); 
      return false; 
     }); 
    }); 
</script> 

形式:

<div id="power"> 
<div class="span4"> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="1" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="4" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="7" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
</div> 
<div class="span4"> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="2" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="5" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="8" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
</div> 
<div class="span4"> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="3" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="6" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
    <form action="game/write.php" id="ajax_form" method="post"><input type="hidden" value="9" name="button"><button type="submit" class="btn btn-block btn-success"><img src="images/null.png"></button></form> 
</div> 

這對於自帶也回來了,只有Buttoncolors是不同的。

+0

爲什麼你使用標籤這樣?你的任務是什麼? – underscore 2013-04-29 17:28:12

回答

1

你需要事件代表團 -

$(document).on('submit','#ajax_form',function(e) { 

試試這個 -

$(document).on('submit','#ajax_form',function(e) { 
    var form = $('#ajax_form'); 
    var data = form.serialize(); 
    $.post('game/write.php', data, function(response) { 
     console.log(response); 
     $('#power').replaceWith(response); 
    }); 
    return false; 
}); 
+0

酷,它工作謝謝 – fibi 2013-04-29 18:35:28

+0

不客氣!乾杯! – 2013-04-29 18:36:56

+0

你能幫助我嗎?我有9個表單,id爲ajax_form。當我按下任何表單的提交按鈕時,第一個表單將被提交。但我希望當你按下提交按鈕時,只有提交按鈕所屬的表單將提交。 – fibi 2013-05-01 11:31:45

-1

event.preventDefault()

文檔:http://api.jquery.com/event.preventDefault/

現在更新你的代碼像波紋管

<script> 
$(document).ready(function() { 


    $('#ajax_form').click(function(event) {//use click instead of submit 

    event.preventDefault() // then use even.preventDefault() 

    var form = $('#ajax_form'); 
    var data = form.serialize(); 
    $.post('game/write.php', data, function(response) { 
     console.log(response); 
     $('#power').replaceWith(response); 
    }); 
    return false; 
}); 

}); 
</script> 

add event.preventDefault()[如果調用此方法,則不會觸發該事件的默認操作。 ]

+0

爲什麼這個投票呢? – underscore 2013-04-29 17:26:03

+1

他已經有'return false;',這在這種情況下是一樣的。如果是提交表單的問題,OP將無法使用ajax提交表單。 – Musa 2013-04-29 17:27:37

+0

@Musa即使最後返回false,JS也會運行,然後返回false,這意味着形式'action'仍然會被調用,否?他的代碼運行得很快,所以我們實際上看不到變化,但如果代碼很慢,那麼在js到達'return false'之前,該操作將首先工作並重定向到頁面。無論如何,我認爲穆罕默德的答案是明確的。由於OP代碼準備就緒,它不會委託給新的代碼片段,因爲在doc.ready內部因此只爲該dom運行.. – RaphaelDDL 2013-04-29 17:33:16

相關問題