如何在提交给第三方服务器之前保存数据?

时间:2011-12-24 23:17:32

标签: php javascript jquery ajax forms

我一直在阅读很多Q& A,这些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文件中捕获我的服务器上的表单数据。

(根据我的研究,我需要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来说,重要的是将隐藏和未隐藏的所有字段传递给action =“http://www.aweber.com/scripts/addlead.pl”。

然而,对于我自己,因为我只对4个字段感兴趣,所以我在head标签的jquery部分中指定了我需要的所有内容。

我不知道为什么代码不能正常工作......所以,我如何确保它首先使用ajax保存到我的服务器将表单数据提交给第三方网址是什么?现在......

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

正在执行并正常工作......但是ajax根本无法保存数据

非常感谢你!

3 个答案:

答案 0 :(得分:1)

首先在您使用的提交按钮上更改事件。而不是

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

使用

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

因为提交事件是针对表单而不是按钮。一旦你改变了,就像Ramengo提到的那样,使用你的成功函数来提交表格。

最好是使用Aweber API,允许您自2011年11月起将用户添加到帐户。

答案 1 :(得分:0)

我刚刚跑出门,但我只是想补充说,当你遇到奇怪的Ajax问题时,尝试使用GET而不是POST来进行ajax调用..这解决了许多问题我以前,因为你使用ajax并且用户看不到网址,所以差异非常微妙且无关紧要。

如果有帮助,请告诉我!

答案 2 :(得分:-1)

你在做什么:

    success: function() {
        }
    });

这将成功加载Ajax内容,因此,您只需要:

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

请确保您已将表单提供给您可以轻松使用的ID。如果您没有为“成功”设置行为,那么您的表单将永远不会提交,因为您正在停止提交行为

return false;

其次,您是否考虑过将表单提交到服务器上写入文件的中间脚本,然后重定向到目标第三方脚本?

如果你不熟悉它,那么你将不得不弄清楚如何使用Ajax。