除了MailChimp之外,如何将表单发布到自定义php脚本
有人能为我调试这个问题提供帮助或建议吗 我有一个表单,除了MailChimp之外,如何将表单发布到自定义php脚本,php,jquery,forms,post,mailchimp,Php,Jquery,Forms,Post,Mailchimp,有人能为我调试这个问题提供帮助或建议吗 我有一个表单,将发布到MailChimp: <form id="mailchimp_signup" action="http://MY_MC_ACCT.us2.list-manage.com/subscribe/post" method="POST"> ... <input type="submit" class="button" name="submit" value="Subscribe to list"> ... $('in
将
发布到MailChimp:
<form id="mailchimp_signup" action="http://MY_MC_ACCT.us2.list-manage.com/subscribe/post" method="POST">
...
<input type="submit" class="button" name="submit" value="Subscribe to list">
...
$('input[type=submit]').click(function(e){
if( $('input[name="more_info"]:checked').val() && !$('#mailchimp_signup').hasClass('success') ){
e.preventDefault();
$.post("../process_email_form.php", $('#mailchimp_signup').serialize(), function(){
alert('posted');
$('#mailchimp_signup').submit();
});
}
});
发生了什么事:
<form id="mailchimp_signup" action="http://MY_MC_ACCT.us2.list-manage.com/subscribe/post" method="POST">
...
<input type="submit" class="button" name="submit" value="Subscribe to list">
...
$('input[type=submit]').click(function(e){
if( $('input[name="more_info"]:checked').val() && !$('#mailchimp_signup').hasClass('success') ){
e.preventDefault();
$.post("../process_email_form.php", $('#mailchimp_signup').serialize(), function(){
alert('posted');
$('#mailchimp_signup').submit();
});
}
});
工作正常,可以发送电子邮件process\u email\u form.php
正在触发警报('posted')
- 不幸的是,我似乎无法将表格提交给MailChimp。警报响起,但什么也没有。。。我在控制台中没有看到任何错误
- 键入
$('mailchimp_signup')。提交()由于某种原因,直接进入控制台的代码>甚至不会将表单发布到MailChimp
第一个请求完成后,您可以务实地提交表单
$('input[type=submit]').click(function(e){
if( $('input[name="more_info"]:checked').val() && !$('#mailchimp_signup').hasClass('success') ){
e.preventDefault();
$.post("../process_email_form.php", $('#mailchimp_signup').serialize(), function(){
alert('posted');
$.post($('#mailchimp_signup').attr('action'),$('#mailchimp_signup').serialize(),function(html){
//do something with the result eg. $(document).html(html);
});
});
}
});
$('input[type=submit]').click(function(e){
if( $('input[name="more_info"]:checked').val() && !$('#mailchimp_signup').hasClass('success') ){
$.ajax({
url:"../process_email_form.php",
data:$('#mailchimp_signup').serialize(),
type:'POST',
async:false
});
}
});
或者您可以在不使用异步的情况下运行第一个请求,这将锁定浏览器,直到ajax请求完成
$('input[type=submit]').click(function(e){
if( $('input[name="more_info"]:checked').val() && !$('#mailchimp_signup').hasClass('success') ){
e.preventDefault();
$.post("../process_email_form.php", $('#mailchimp_signup').serialize(), function(){
alert('posted');
$.post($('#mailchimp_signup').attr('action'),$('#mailchimp_signup').serialize(),function(html){
//do something with the result eg. $(document).html(html);
});
});
}
});
$('input[type=submit]').click(function(e){
if( $('input[name="more_info"]:checked').val() && !$('#mailchimp_signup').hasClass('success') ){
$.ajax({
url:"../process_email_form.php",
data:$('#mailchimp_signup').serialize(),
type:'POST',
async:false
});
}
});
谢谢那么,第一个选项看起来会在幕后提交给MailChimp?我需要它去他们的成功(或验证)页面。我尝试了第二个选项,它似乎起了作用-除了某些原因,帖子数据不会像我原来的代码那样发送到电子邮件表单。它现在给我发了一封空白的电子邮件。你是对的。这是已知的,你必须使用第二个。它将在处理第一个请求时锁定浏览器。在第一个请求运行时,我会显示一些加载对话框。上面我的代码有问题,所以流程\u电子邮件\u表单填写正确(只是没有发布到MC)。使用您的代码(第二个)时,它确实会转到MC和我的脚本,但我的脚本没有看到POST数据(
print\r($\u POST,TRUE);
返回array()
)。尝试在其中抛出一个e.preventDefault,看看它是否仍然没有发布数据。据我所知,它应该会起作用。可以尝试将变量设置为serialize(),var data=$(“#mailchimp_signup”).serialize()然后在$.ajax调用中设置它。还要在序列化上执行console.log并确保它实际上正在序列化数据。我的错,我看到了问题,请将方法更改为类型。我正在上面的答案中修正它。