【问题标题】:Stop refresh page after remote form is loaded via jquery ajax通过 jquery ajax 加载远程表单后停止刷新页面
【发布时间】:2012-06-23 17:32:52
【问题描述】:

我在一个页面上有一个 div,我使用 jquery .load() 和 setTimeout() 从另一个 php 页面(同一网站)加载 div 来刷新它。这个 div 虽然包含一个带有两个具有随机名称和 id 的单选按钮的表单。按下提交按钮后,页面被重定向到包含其他选项的表单页面。我想要做的是提交表单而不重定向到默认表单页面。

附言提交后包含表单“消失”的 div 并出现另一个具有其他选项的 div。我只是希望它从目标 div 中消失。我无法控制源页面,也无法更改那里的任何内容。

<div id="destinationdiv">
//source form that doesn't have id goes here
</div>

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    您可以在页面加载时将提交处理程序委托给表单,即使它在 ajax 加载之前不存在。由于表单没有标识符,将使用它的父元素和表单标签作为选择器

    http://api.jquery.com/on/

    $(document).on('submit', '#destinationdiv form', function() { /* "this" will be the form element*/
    
    
        /* serialize all fields for ajax submittal*/
        var data = $(this).serialize();
    
        /* ajax post data */
        $.post(url, data, function(data) { 
           /* do something with return data, or local html on success here*/
        });
    
        /* prevent browser default submit*/
    
        return false;
    })
    

    【讨论】:

      【解决方案2】:

      也许您可以通过序列化表单(参见 JQuery 的 .serialize())并通过 AJAX 发送(使用 $.get()$.post)来制作自己的“提交”:

      $('#myform').submit(function() {
      
        $.post("pageThatUsesTheFormData.php", $(this).serialize();
      
        return false;
      });
      

      (我假设它是一个使用表单数据的php页面,但也可以是ASP.NET,没关系)。

      这种方式实际上不会像通常的 HTML 意义那样“提交”表单(这是因为 return false;),但您仍然可以将数据发送到将处理它的页面。

      如果您必须使用 GET 方法而不是 POST,请使用 $.get("url?"+$(this).serialize());

      【讨论】:

      • 表单没有标识符,并且加载了 ajax...更好地委托处理程序
      • 没有标识符,所以我使用了另一种方法。还是谢谢!
      猜你喜欢
      • 1970-01-01
      • 2012-02-20
      • 2020-03-05
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 2013-08-10
      • 2015-03-01
      • 1970-01-01
      相关资源
      最近更新 更多