2013-04-29 128 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

相关问题