【问题标题】:submitting two forms via javascript without click通过javascript提交两个表单而不点击
【发布时间】:2012-03-09 19:36:26
【问题描述】:

我正在使用以下代码自动提交表单

<script type="text/javascript">
$(function () {
    $('#submit').click();
});
</script>

<div style="display:none">
<form method="post" action="http://mydomain/texting/register.php?list_id=15">
<input type="hidden" name="name" value="<?php echo $_SESSION['name2']; ?>" />
<input type="hidden" name="email" value="<?php echo $_SESSION['email2']; ?>" />
<input type="hidden" name="ok" value="1" />
<input type="submit" id="submit" value="Sign Up" style="visibility:hidden;" />
</form>
</div>

我想将相同的数据提交到两个 url ...

http://mydomain/texting/register.php?list_id=15
http://mydomain.com/texting/register.php?list_id=<?php echo $_SESSION['city2']; ?>

如何编辑我的代码以自动提交相同的表单数据?

我试过这个代码

<script type="text/javascript">
function submitTwice(f){
f.action = 'http://mydomain.com/texting/register.php?list_id=<?php echo $_SESSION['city2']; ?>';
f.target='ifr1';
f.submit();
f.action = 'http://mydomain.com/texting/register.php?list_id=15';
f.target='ifr2';
f.submit();
}
</script>
*/


<script type="text/javascript">
$(function () {
    $('submitTwice(f)').click();
});
</script>


<div style="display:none">
<iframe name="ifr1" width="20" height="20">
<form method="post" action="http://mydomain.com/texting/register.php?list_id=<?php echo $_SESSION['city2']; ?>">
<input type="hidden" name="name" value="<?php echo $_SESSION['name2']; ?>" />
<input type="hidden" name="email" value="<?php echo $_SESSION['email2']; ?>" />
<input type="hidden" name="ok" value="1" />
<input type="submit" id="submit" value="Sign Up" style="visibility:hidden;" />
</form></iframe>
</div>
<div style="display:none"><iframe name="ifr2" width="20" height="20">
<form method="post" action="http://mydomain.com/texting/register.php?list_id=15">
<input type="hidden" name="name" value="<?php echo $_SESSION['name2']; ?>" />
<input type="hidden" name="email" value="<?php echo $_SESSION['email2']; ?>" />
<input type="hidden" name="ok" value="1" />
<input type="submit" id="submit" value="Sign Up" style="visibility:hidden;" />
</form></iframe>
</div>

但它不起作用,任何建议让它发生,相同的数据将使用 javascript 自动发送到两个 url

【问题讨论】:

  • 如果表单在同一个域中,您可以将它们放在两个`
  • 发送表单在同一个域中,只有 list_id 不同
  • 代码将驻留在服务器上

标签: php javascript forms function post


【解决方案1】:

您可以使用 jQuerys ajax 并将数据与 post 一起发送到两个 url。

首先将要发送的所有数据保存在一个有效的数据数组中。如果你想让它自动化,你可以这样做:

var sendData = {};
$("#formId").find("input").each(function(i, item){
    sendData[item.name] = item.value;
});

或作为一个简单的字符串:

var sendData = "name=value&email=value";

然后使用 ajax 将表单数据发送到两个 url,作为帖子类型:

$.ajax({ url: "http://url1/", type: "POST", data: sendData,
         success: function(response){
             alert(response);
         }
});
$.ajax({ url: "http://url2/", type: "POST", data: sendData,
         success: function(response){
             alert(response);
         }
});

注意:确保向按钮或发送表单返回 false,您可以这样做:

$("formId").submit(function(){
    // do ajax send data
    return false;
}

编辑:为此添加未经检查的代码,使用 cmets

$(document).ready(function(){
    // grab the form and bind the submit event
    $("#formId").submit(function(){
        // collect all the data you want to post
        var sendData = {};
        this.find("input").each(function(i, item){
            sendData[item.name] = item.value;
        });

        // send the request to both urls with ajax
        $.ajax({ url: "url1", type: "POST", data: sendData,
                 success: function(response){
                    // handle response from url1
                    alert(response);
                 }
        });
        $.ajax({ url: "url2", type: "POST", data: sendData,
                 success: function(response){
                    // handle response from url2
                    alert(response);
                 }
        });

        // return false, to disable default submit event
        return false;
    });
});

【讨论】:

  • 我是新手,请多解释一下
  • 使用一个表单,并为其添加一个 id 标签,然后检查我帖子中添加的代码,希望它能帮助您入门
【解决方案2】:

只需以常规形式将姓名和电子邮件发送到服务器脚本, 然后在你的 register.php 中使用 HttpRequest 之类的东西做两个请求......

一些手绘代码:

客户:

<form id="autoSubmitForm" method="post" action="/register.php?list_id=15">
    <input type="hidden" name="name" value="<?php data['name2']; ?>" />
    <input type="hidden" name="email" value="<?php data['email2']; ?>" />
    <input type="submit" name="submit" value="Sign Up" style="visibility:hidden;" />
</form>
<script>
    $(document).ready(function(){
       $('#autoSubmitForm').submit();
    });
</script>

服务器:

<?php
   $name = $_POST["name2"];
   $email = $_POST["email2"];
   $url1 = 'http://lala'; //or relative to server root: '/lala'
   $url2 = 'http://other';
   sendRequest($url1, $name, $email);
   sendRequest($url2, $name, $email);
?>

sendRequest 的实现值得另一个问题(或者阅读上面提到的 HttpRequest 的文档)

祝你好运,我看到你重复的问题已关闭...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多