Php 使用Ajax提交表单

Php 使用Ajax提交表单,php,jquery,jquery-validate,Php,Jquery,Jquery Validate,我有一个内置表单的div,设置为使用ajax发布并在div中返回结果,如下所示 $(document).ready(function(){ $("#guestList").validate({ debug: false, submitHandler: function(form) { // do other stuff for a valid form //$('form').attr('id', 'gues

我有一个内置表单的div,设置为使用ajax发布并在div中返回结果,如下所示

$(document).ready(function(){
    $("#guestList").validate({
        debug: false,
        submitHandler: function(form) {
            // do other stuff for a valid form
            //$('form').attr('id', 'guestList1')
            $.post('brides_Includes/guestlistDisplay1.php', $("#guestList").serialize(), function(data) {
                $('#results').html(data)
                $("form#guestList")[0].reset();
            });
        }
    });
});
当结果返回时,它将显示正确的更改并替换表单。但是当我再次发布表单时。相关的更改按其应该的方式进行,但随后也会刷新页面,并在地址栏中显示发布的信息


我如何发布表单并替换它,从而允许它再次发布和调用脚本而不发生这种情况?

使用ajax返回表单的问题是,页面上已有的任何JavaScrip代码都不会看到/利用新表单。解决这个问题的最佳方法是使用ajax将JavaScrip和HTML传回

基本上,每次返回一个新表单时,都要返回下面的代码。您需要更新
ID
s和链接(brides\u Includes/guestlistDisplay1.php)。您还需要将主页上的代码替换为该代码,因为执行任何传递回的JavaScrip都需要该代码

<script type="text/javascript">
$(document).ready(function(){
  $("#guestList").validate({
    debug: false,
    submitHandler: function(form) {
      // do other stuff for a valid form
      //$('form').attr('id', 'guestList1')
      $.post('brides_Includes/guestlistDisplay1.php', $("#guestList").serialize(), function(data) {
        $('#results').html(data);

        //This executes the JavaScript passed back by the ajax.
        $("#results").find("script").each(function(i) {
          eval($(this).text());
        });

        $("form#guestList")[0].reset();
      });
    }
  });
});
</script>

$(文档).ready(函数(){
$(“#来宾列表”).validate({
调试:错误,
submitHandler:函数(表单){
//为有效的表单做其他事情
//$('form').attr('id','guestList1'))
$.post('brides_Includes/guestlistDisplay1.php',$(“#guestList”).serialize(),函数(数据){
$('#results').html(数据);
//这将执行ajax传回的JavaScript。
$(“#结果”).find(“脚本”).each(函数(i){
eval($(this.text());
});
$(“form#guestList”)[0]。重置();
});
}
});
});

当表单被替换时,“提交”按钮是否被替换?也许向onclick事件添加
return false
可以纠正它。嗨,Graham。没有onclick事件提交表单时,它会调用PHP页面,完成其操作,并被告知打印新表单。新表单与旧表单具有相同的名称和ID,我可以告诉您,新表单已被替换,因为我已告诉它显示新表单名称,所以这一侧的所有内容都很好。因此,当加载并提交新表单时,它应该再次执行相同的操作,并在不刷新页面的情况下使用jquery函数。但是您可以看到页面刷新,它在地址中显示发布的信息。巴里误读了代码的一部分,看起来像
$(“#guestList”)。需要告诉validate
查看新表单和/或其元素。您是否使用相同的
ID
?嗨,格雷厄姆,初始表单称为guestlist,新表单也称为gustlist。我尝试过给新表单一个不同的ID,但它仍然是一样的。因此,我更改了新的表单名称,添加了额外的代码来验证新表单名称,并告诉它调用不同的页面,看看这是否有什么不同,但是reulst是相同的,新代码看起来像这样啊,非常感谢。我从页面中删除了脚本,并将表单作为包含脚本的include调用到results div中。然后,当它被发布时,它调用第二个页面,该页面也包含脚本。因此,正如您所建议的,每次都替换脚本,效果非常好。非常感谢在过去的两天里,我一直在试图自己解决这个问题,但没有找到答案:)