отправка двух форм через JavaScript без клика - PullRequest
1 голос
/ 19 февраля 2012

я использую следующий код для автоматической отправки формы

<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>

но это не работает, любое предложение, чтобы это произошло, одни и те же данные должны быть отправлены на оба URL автоматически с использованием javascript

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Вы можете использовать jQuerys ajax и отправлять данные по почте на оба URL.

сначала сохраните все данные, которые вы хотите отправить, в действительный массив данных. если вы хотите, чтобы это было автоматизировано, вы можете сделать что-то вроде этого:

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

или в виде простой строки:

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

затем отправьте данные формы на оба URL с помощью ajax, как тип записи:

$.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;
}

РЕДАКТИРОВАТЬ: добавлен непроверенный код для этого, с комментариями

$(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;
    });
});
1 голос
/ 19 февраля 2012

просто отправьте имя и адрес электронной почты на серверный скрипт в обычной форме, затем сделайте два запроса из вашего 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, упомянутой выше)

Удачи, я вижу, ваш дубликат вопроса закрыт ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...