通过jquery ajax加载远程表单后停止刷新页面

时间:2012-06-23 09:19:59

标签: jquery ajax

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

P.S。提交后包含“消失”形式的div,并显示另一个带有其他选项的div。我只想让它从目的地div中消失。我无法控制源页面,也无法更改任何内容。

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

2 个答案:

答案 0 :(得分: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;
})

答案 1 :(得分:0)

也许你可以通过序列化表单(参见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());