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



我一直在阅读大量的问题&A无处不在,这些stackoverflow帖子似乎与我想做的事情最相关:1)如何使用一个sumit表单在两台服务器上保存数据?2)如何在提交表单到第三方url之前调用服务器端操作方法?

基本上,我正在使用Aweber自动回复服务,我一直有一些技术问题,在Aweber中似乎没有记录线索,即使我在我的分析软件上看到人们正在用电子邮件填写表格并点击提交按钮。

所以,我希望我能在表单数据提交给Aweber之前,首先在TXT文件中捕获服务器上的表单数据。

(从我的研究,我需要ajax, jquery来实现这一点)

根据不同的帖子和教程,我想出了以下,但不幸的是仍然不起作用…

如果可能的话,请让我知道如何修复这个代码。非常感谢!!

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

上面,我不知道是否"return 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来说,所有列出的隐藏和非隐藏字段都传递给action="http://www.aweber.com/scripts/addlead.pl"是很重要的。

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

我不知道为什么代码不工作…所以,我如何确保它将保存到我的服务器首先与ajax之前的表单数据提交给第三方url?现在…

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

正在执行并正常工作…但是ajax根本不保存数据

非常感谢!

首先更改您使用的提交按钮上的事件。所以不用

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

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

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

最好是使用Aweber API,它允许你从2011年11月开始将用户添加到一个帐户。

我只是跑出门在分钟,但我只是想补充说,有时当你有奇怪的Ajax问题,尝试使用GET而不是POST的Ajax调用。这已经为我解决了许多问题,因为你使用ajax和url是看不到的用户,差异是相当微妙和无关的。

如果有帮助,请告诉我!

你在做什么吗?

    success: function() {
        }
    });

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

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

只要确保你给你的表单一个id,你可以很容易地使用引用。如果你没有为"success"设置行为,那么你的表单将永远不会提交,因为你使用

来停止提交行为。
return false;

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

如果您不熟悉Ajax,这将节省您学习如何使用它的时间。

最新更新