【问题标题】:Post a form with jQuery and add it to the page使用 jQuery 发布表单并将其添加到页面
【发布时间】:2011-05-03 00:29:42
【问题描述】:

嘿!
我有这个表单的代码:


<form class="myform" name="myform" method="POST" action="post.php">
<textarea id="mytextarea" name="mytextarea"></textarea>
<button>Share</button>
</form>

我也有这个页面的代码:


<div class="content">
<div class="message">That message</div>
<div class="info">Published 10/10/10 </div>
</div>
<div class="content">
<div class="message">That other message</div>
<div class="info">Published 10/9/10 </div>
</div>

是否可以使用 jQuery 发送表单,而不必重新加载整个页面?我可以检索表单的响应并将响应放在第一个 &lt;div class="content"&gt; 的顶部吗?
注意:我有多个具有相同类的表单。
非常感谢!

【问题讨论】:

    标签: jquery forms post


    【解决方案1】:

    是的,使用 jQuery 发送表单相当简单。

    有一个使用 AJAX 发布数据的简单函数,并且很容易绑定表单的值:

    $.post(url, $('#myform').serialize(), function(data) { 
        $('#content').prepend(data);
    })
    

    $.post 是简单的方法。如果你需要检查错误等等,你应该检查 $.ajax (http://api.jquery.com/jQuery.ajax)。

    【讨论】:

      【解决方案2】:

      要使用 jQuery 提交表单,我相信您需要检查一下:http://api.jquery.com/submit/

      我相信您可以通过以下方式检索提交的数据:

      $('[name=mytextarea]').val()`
      

      【讨论】:

      • .val() 在一些较旧的浏览器上存在问题。最好使用 .attr('value') 来实现兼容性。
      【解决方案3】:

      是的,这当然是可能的,使用 AJAX:

      $('.myform').submit(function(e){
          var data = $(this).serialize();
          e.preventDefault();
      
          $.ajax({
              url: this.action,
              type: 'POST',
              success: function(data) {
                  $('#content').prepend(data);
              },
              error: function() {
                  alert('oops, something went wrong');
              }
          );
      });
      

      【讨论】:

      • 如果我有同一个类的各种表单,我如何只能使用用户点击“发送”的那个?
      • 我刚刚注意到您的问题提供了classmyform 的形式,而不是id。我已经相应地更新了答案。此操作只会发生在用户提交的表单上。 submit 函数的意思是“当提交这些表单之一时,改为执行此操作”。
      • 当我点击“发送”按钮时,浏览器会加载action URL,而不是在同一页面中发送。你知道发生了什么吗?
      • 是的,您可能没有从上面的代码中复制e.preventDefault() 行。这可能是因为我第一次忘记包含它并且不得不编辑代码来纠正这个问题!道歉。
      • 我复制了它。检查它jsfiddle.net/kBzNC/2 浏览器刷新到操作 URL 就是这样。
      猜你喜欢
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多