2011-12-24 5 views
2

Я читал через множество Q & везде, и эти StackOverflow посты, кажется, наиболее тесно связанные с тем, что я пытаюсь сделать: 1) How we can save data on two servers using one sumit form? 2) How to call server side action method just before submitting form to 3rd party 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/скрипты/addlead.pl».

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

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

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

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

Спасибо так много!

+0

Разве вы не можете просто разместить его в два раза? У вас есть вызов $ .ajax, который делает одно сообщение, почему бы не добавить второй '$ .ajax' ниже того, который делает другой, в том же событии клика? Просто убедитесь, что ваша функция успеха не перенаправляется, пока оба не закончили. – Nanne

+0

@Nanne: спасибо за подсказку Я попытался выполнить 2 вызова ajax с действием формы, установленным на «#». однако даже при этом никакой вызов ajax не выполнялся ... Как и в случае с текущим кодом, действие = "http://www.aweber.com/scripts/addlead.pl" будет выполняться, но по какой- Сообщение ajax, похоже, не функционирует ... – HarryPotter

ответ

1

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

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

использования

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

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

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

-1

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

success: function() { 
     } 
    }); 

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

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

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

return false; 

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

Это поможет вам понять, как использовать Ajax, если вы не знакомы с ним.

+0

Позднее он получает значение из 'email.val()'. – Josh

+0

Благодарим вас за ответ Раменго. Я попробую ваши предложения! Причина, по которой я не могу отправить форму промежуточному скрипту на моем сервере, потому что тогда все лидеры будут поступать с моего ip-сервера ... на который будет навешен Aweber – HarryPotter

+0

@HarryPotter: Игнорируйте это, так как вы получаете значение своего поля электронной почты и т. д. в следующей строке кода: 'var data = 'email =' + email.val() + '& custom_sub1 =' + custom_sub1.val() + '& custom_sub2 =' + custom_sub2.val() + '& custom_sub3 =' + custom_sub3.val(); ' – Josh

0

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

Сообщите мне, если это поможет!

+0

спасибо за помощь! вещь ...Я не знаю, почему вызов ajax не выполняется. - это потому, что я закодировал это неправильно? - это потому, что я использую неправильный синтаксис? - это потому, что я использую неправильные функции? Каков наилучший способ устранения неполадок ajax ... – HarryPotter

Смежные вопросы