有人能为我提供任何帮助或建议来调试这个问题吗?
我有一个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
运行良好,正在发送电子邮件。则CCD_ 3是触发。
不幸的是,我似乎无法将表格提交给MailChimp。警报响起,但什么也没有。。。我在控制台中没有看到任何错误。
由于某种原因,直接在控制台中键入
$('#mailchimp_signup').submit();
甚至不会将表单POST到MailChimp
更多背景
这实际上是我写的关于这个问题的第三个问题。起初,我试图用cURL来解决这个问题,但这似乎是错误的方法。供参考:
- 在从表单发布到其他人的脚本之前,我如何执行php
- 使用cURL将表单POST到两个位置
您可以在第一个请求完成后务实地提交表单。
$('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);
});
});
}
});
或者,您可以在没有async的情况下运行第一个请求,这将锁定浏览器,直到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
});
}
});