任何人都可以向我提供任何帮助或建议调试此问题吗?
我有一张表格POST
给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();
});
}
});
发生了什么:
process_email_form.php
工作正常,并发送电子邮件。
alert('posted')
触发。
不幸的是,我似乎无法将表单提交给MailChimp。警报触发,但后来没有......我在控制台中没有看到任何错误。
直接在控制台中输入$('#mailchimp_signup').submit();
甚至没有因为某种原因将表单发布到MailChimp
更多背景
这实际上是我写的关于这个问题的第三个问题。起初我试图用cURL解决它,但这似乎是错误的方法。供参考:
答案 0 :(得分:2)
您可以在第一个请求完成后以实际方式提交表单。
$('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);
});
});
}
});
或者您可以在没有异步的情况下运行第一个请求,这将锁定浏览器,直到ajax请求完成。
$('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
});
}
});