javascript - 动态加载表单和提交脚本

标签 javascript jquery html dom

我正在将表单动态加载到 div 中。使用 JQuery.post 发布表单时,应显示结果而无需重新加载整个页面。但响应中收到的内容会加载到整个浏览器中,因此主页不再显示菜单、 Logo 等。有很多 php 代码生成内容,这只是我认为现在可能感兴趣的内容:

<div id='subscribe_page'>
<div id='sub' class='subscribe'>
<form id='subscribe_now' action='subscription.php' name='subscribe' method='post'>
    <p class='formlabel'>Förnamn</p> <input type='text' id='first_name' name='first_name'/><br/>
    <p class='formlabel'>Efternamn</p> <input type='text' id='surname' name='surname'/> <br/>
    <p class='formlabel'>E-mail</p> <input type='text' id='email1' name='email1'/><br/>
    <p class='formlabel'>Repeat e-mail</p> <input type='text' id='email2' name='email2'/> <br/>
    <input class='inputsubmit' type='submit' value='Subscribe'/>
</form>
</div>
</div>
<script language='javascript' type='text/javascript' src='jquery-1.6.2.min.js'></script>
 <script language='javascript' type='text/javascript'>

  $(document).ready(function() {
   $('#subscribe_now').submit(function() {
   regExp = /^[^@]+@[^@]+$/;

   if(($('#email1').val().search(regExp) == -1) || !isEqual($('#email1').val(), $('#email2').val())) 
   { 
       alert('Incorrect entered email addresses. They must be valid e-mail addresses and equal.');
      return false; 
   } else{
    alert('Posting data' + $('#subscribe_now').serialize());
    $.post('subscription.php', $('#subscribe_now').serialize(), function(data) {
        $('#subscribe_page').html(data);
        alert('Posted data');
    });
    return true;
   }     

});

});     
</script>"

上面的所有内容都加载到属于主页的 div 中。发布后,我希望响应中的数据显示在 div subscribe_page 中。但事实并非如此。

请注意,$.post 内的警报不会被触发。不过,前一行的警报被触发,结果如下:

first_name=sertdg&surname=5tghf&email1=niklas%40iandapp.com&email2=niklas%40iandapp.com

我也尝试指定应该返回的内容,而行为没有差异:

$.post('subscription.php', $('#subscribe_now').serialize(), function(data) {
        $('#subscribe_page').html(data);
        alert('Posted data');
}, 'html');

问题可能是什么以及如何解决?

最佳答案

好吧,我不太明白,但如果你明白的话:

 $('#subscribe_page').html(data); 

您实际上删除了该 div 中的所有内容,并将其替换为您的响应。也许你应该这样做:

 $('#subscribe_page').after(data);

 $('#subscribe_page').append(data);

编辑 - 由于问题出在您的 $.post 中,我认为您不应该使用 serialize()因为该函数与 $.get() 一起使用。你应该看看param()serializeArray()

关于javascript - 动态加载表单和提交脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6735467/

相关文章:

html - 删除文本框的自动完成

javascript - 如何使用 iCheck 反转选择

javascript - Stripe 在本地返回成功的测试交易,但不在实时页面上返回

javascript - 将一个 Div 插入另一个 Div?

javascript - JQuery 数据表在初始化后突出显示行

javascript - <select> 标签并将多个值返回给 javascript 方法

html - 带有 flash 对象的 Div 背景

javascript - 是否可以在 Firefox 中添加和修改 dns 缓存条目?

jquery - 使用 jquery 将选定的复选框放入文本框中

jquery - jqGrid "_search"参数始终为 false