在表单提交上执行jQuery / ajax POST

时间:2013-09-03 16:37:42

标签: javascript jquery ajax forms

我有一个像这样的html表单:

<form action="myServer.com/test.php" method="post">
...
</form>

提交表单后,应将用户重定向到myServer.com/test.php,并将发布数据发送到脚本。但是,在同一时间(或之前),我想将相同的POST数据发布到另一个脚本“myServer.com/test2.php”。

$.post("myServer.com/test2.php", variableWithTheFormPOSTData);

我试图将一个EventListener附加到表单提交,但这似乎不起作用,也许jquery post不能在重定向之前足够快地提交?

我希望你能帮助我。 :(

3 个答案:

答案 0 :(得分:0)

每当你使用带onsubmit的方法时,请确保它返回true,否则它将不会提交。

答案 1 :(得分:0)

使用按钮作为提交按钮,以便在您单击时同时发布表单。并触发ajax函数将数据间接发布到第二页。

<form name="myform" action="myServer.com/test.php" method="post">
    ...
    <button onclick="doIndirectPost();"></button>
</form>

并且在ajax发布功能的成功回调中触发您的表单帖子

function doIndirectPost() {
    //initialize variableWithTheFormPOSTData here
    $.post("myServer.com/test2.php", variableWithTheFormPOSTData,function(success,error)    {
         //ajax post is completed now we trigger the form post to test.php
         document.myform.submit();

    });  
}

答案 2 :(得分:0)

你可以使用ajax本身,这将避免重新加载页面

<form id="form1">
 .....
<input type="text" name="email"/> <!--Example input text box-->
<input type="button" id="submit"/> 
</form>

和jquery代码

$("#submit").click(function()
{
$.post("myServer.com/test2.php", $("#form1").serialize());//$("#form1).serialize() will get the data in the form automatically
$.post("myServer.com/test.php", $("#form1").serialize());

});

.serialize()会自动序列化要发布的表单中的数据

服务器端页面中的

使用此

<?php
parse_str($_POST['serialize'], $data);
$name  = $data["email"] 


// do your code
?>

希望这有帮助,谢谢