2011-12-24 43 views
2

我一直在通過大量的Q &一個無處不在的這些計算器的帖子閱讀似乎是最相關的什麼,我試圖做的: 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中記錄。

因此,我希望能夠在表單數據被提交給Aweber之前,先在我的服務器上捕獲表單數據,並將其寫入TXT文件中。

(從我的研究,我需要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> 

以上,我不知道是不是 「返回false;」導致該問題的形式

身體:

<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個字段感興趣,所以我在head標籤的jquery部分中指定了所需的全部內容。

我不知道爲什麼代碼不工作...所以,我如何確保它將保存到我的服務器之前先用ajax將表單數據提交給第三方url?現在...

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

正在執行和工作正常...但阿賈克斯不會從我可以告訴

非常感謝你在所有保存的數據!

+0

不能只發布兩次嗎?你有一個'$ .ajax'調用來完成一個帖子,爲什麼不在相同的點擊事件中添加另一個'$ .ajax'低於那個那個呢?只要確保你的成功功能不會重定向到兩者都完成。 – Nanne 2011-12-24 23:21:22

+0

@Nanne:感謝您的提示 我曾嘗試在表單操作設置爲「#」的情況下執行2個ajax調用。然而,即使如此,沒有ajax調用正在執行... 就像使用當前代碼,action =「http://www.aweber.com/scripts/addlead.pl」將執行,但由於某種原因,阿賈克斯後似乎不起作用... – HarryPotter 2011-12-25 00:09:21

回答

1

首先在您使用的提交按鈕上更改事件。因此,而不是

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

使用

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

爲提交事件是形式,而不是按鈕。一旦你改變了那個,那麼就像Ramengo提到的那樣,使用你的成功函數來提交表單。

雖然使用Aweber API會更好,它允許您從2011年11月起將用戶添加到帳戶。

-1

你跟做任何事情:

success: function() { 
     } 
    }); 

這將觸發對Ajax內容等的成功加載,你應該需要的是:

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

只要確保你已經給你形成一個你可以很容易地用來引用的ID。如果不設置「成功」行爲,那麼你的表格決不會屈服於你與

return false; 

其次停止提交行爲,你有沒有考慮提交表單到服務器上的中介腳本寫入文件,然後重定向到目標第三方腳本?

如果你不熟悉Ajax,這將節省你不得不弄清楚如何使用Ajax。

+0

他後來通過'email.val()'得到的價值。 – Josh 2011-12-24 23:44:55

+0

感謝您的回覆Ramengo。我會嘗試你的建議! 我無法將表單提交給我的服務器上的中間腳本的原因是,然後所有的線索將來自我的服務器IP ...這將被Aweber皺起了眉頭 – HarryPotter 2011-12-24 23:45:02

+0

@HarryPotter:忽略這個你會在下一行代碼中獲得你的電子郵件字段等的值:var data ='email ='+ email.val()+'&custom_sub1 ='+ custom_sub1.val()+'&custom_sub2 =' + custom_sub2.val()+'&custom_sub3 ='+ custom_sub3.val(); ' – Josh 2011-12-24 23:47:07

0

我只是在一分鐘內耗盡大門,但我只是想補充一點,當你有奇怪的Ajax問題時,嘗試使用GET而不是POST來進行ajax調用。這已修復了許多問題對於我來說,因爲你使用的是ajax,並且用戶看不到網址,所以這些差異非常微妙和不相關。

讓我知道這是否有幫助!

+0

感謝您的幫助! 事情是...我不知道爲什麼ajax調用沒有被執行。 - 是因爲我編碼錯了嗎? - 是因爲我使用不正確的語法嗎? - 是因爲我使用了錯誤的功能嗎? 解決ajax問題的最佳方法是... – HarryPotter 2011-12-25 05:15:51

相關問題