Как сохранить данные перед отправкой на сторонний сервер? - PullRequest
2 голосов
/ 25 декабря 2011

Я читал множество вопросов и ответов повсюду, и эти сообщения о стековом потоке, похоже, наиболее связаны с тем, что я пытаюсь сделать: 1) Как мы можем сохранить данные на двух серверах, используя одну форму sumit? 2) Как вызвать метод действия на стороне сервера непосредственно перед отправкой формы на сторонний URL-адрес?

По сути, я работаю со службой автоответчика Aweber, и у меня возникли некоторые технические проблемы, когда кажется, что лидирующие позиции в Aweber не записываются, хотя я вижу, что в моем аналитическом программном обеспечении люди заполняют формы по электронной почте и нажимают на кнопка отправки.

Итак, я надеялся, что смогу сначала собрать данные формы на моем сервере в файл TXT, прежде чем данные формы будут отправлены в Aweber.

(из моего исследования мне нужен ajax, jquery для этого)

Следуя различным постам и учебникам, я придумал следующее, но, к сожалению, все еще не работает ...

Пожалуйста, дайте мне знать, как исправить этот код, если это возможно. СПАСИБО, ОГРОМНОЕ !!!

Голова с jquery:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">

$(document).ready(function() {

    //if submit button is clicked
    $('#submit').submit(function () {       

        //Get the data from all the fields
        var email = $('input[name=email]');
        var custom_sub1 = $('input[name=custom sub1]');
        var custom_sub2 = $('input[name=custom sub2]');
        var custom_sub3 = $('input[name=custom sub3]');

        //organize the data properly
        var data = 'email=' + email.val() + '&custom_sub1=' + custom_sub1.val() + '&custom_sub2='
        + custom_sub2.val() + '&custom_sub3='  + custom_sub3.val();

        //start the ajax
        $.ajax({
            //this is the php file that processes the data and send mail
            url: "http://mydomain.com/form_plus_email.php",

            //method
            type: 'POST',

            //pass the data        
            data: data,    

            //Do not cache the page
            cache: false,

        success: function() {
            }
        });



        //cancel the submit button default behaviours
        return false;
    });
}); 


</script>
</head>

Выше, я не знаю, если "вернуть ложь"; вызывает проблемы

Тело с формой:

<form method="post" action="http://www.aweber.com/scripts/addlead.pl">

<input type="text" name="email" value="Enter email" id="email">

<input value="xxxxxxxxxxxx" name="meta_web_form_id" type="hidden">
<input value="" name="meta_split_id" type="hidden">
<input value="xxxxxxxxxxxxx" name="listname" type="hidden">
<input value="http://domain.com/thankyoupage" name="redirect" type="hidden">
<input value="http://domain.com/thankyoupage" name="meta_redirect_onlist" type="hidden">
<input value="xxxxxxxxxxxxx" name="meta_adtracking" type="hidden">
<input value="1" name="meta_message" type="hidden">
<input value="email" name="meta_required" type="hidden">
<input value="1" name="meta_forward_vars" type="hidden">
<input value="" name="meta_tooltip" type="hidden">
<script type="text/javascript">
{
document.write('<input type="hidden" name="custom sub1" value="'+sub1+'">')
document.write('<input type="hidden" name="custom sub2" value="'+sub2+'">')
document.write('<input type="hidden" name="custom sub3" value="'+sub3+'">')
}
</script>

<input type="image" value="Submit Button" name="submit" src="image.png" id="submit" class="button1">
        </form>



</body>

Для Aweber важно, чтобы все перечисленные поля как скрытые, так и не скрытые, передавались действию = "http://www.aweber.com/scripts/addlead.pl".

Однако для себя, поскольку меня интересуют только 4 поля, я указал все, что мне нужно, в разделе jquery тега head.

Я не знаю, почему код не работает ... Итак, как мне убедиться, что он сначала сохранит на моем сервере ajax до данные формы будут переданы на сторонние URL ? Прямо сейчас ...

<form method="post" action="http://www.aweber.com/scripts/addlead.pl">

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

Спасибо большое!

Ответы [ 3 ]

1 голос
/ 11 января 2012

Сначала измените событие на кнопке отправки, которую вы используете.Поэтому вместо

$('#submit').submit(function () {

используйте

$('#submit').click(function () {

, так как событие отправки для формы, а не для кнопки.Как только вы изменили это, как уже упоминал Раменго, используйте функцию успеха для отправки формы.

Лучше было бы использовать API Aweber, который позволяет добавлять пользователей в учетную запись с ноября 2011 года.

0 голосов
/ 25 декабря 2011

Я просто выбегаю из двери в минуту, но я просто хочу добавить, что иногда, когда у вас возникают странные проблемы с Ajax, попробуйте использовать GET вместо POST для вызова ajax ... это исправило много проблем дляя раньше и, поскольку вы используете ajax, а URL-адрес не виден пользователю, различия довольно тонкие и не имеют значения.

Дайте мне знать, если это поможет!

0 голосов
/ 25 декабря 2011

Ты что-нибудь делаешь с:

    success: function() {
        }
    });

Это сработает при успешной загрузке содержимого Ajax, поэтому все, что вам нужно, это:

    success: function() {
           $('#formid').submit();
        }
    });

Просто убедитесь, что вы дали своей форме идентификатор, который вы можете легко использовать для ссылки. Если вы не установили поведение для «успеха», то ваша форма никогда не будет отправлена, поскольку вы останавливаете поведение отправки с помощью

return false;

Во-вторых, рассматривали ли вы возможность отправки формы промежуточному сценарию на вашем сервере, который записывает в файл, а затем перенаправляет к целевому стороннему сценарию?

Это избавит вас от необходимости понимать, как использовать Ajax, если вы не знакомы с ним.

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