1

この問題をデバッグするための助けやアドバイスをくれる人はいますか?

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 に POST されません。

その他の背景

これは実際、この問題に関して私が書いた 3 番目の質問です。最初はcURLで解決しようとしましたが、それは間違ったアプローチのようでした。参考のため:

  1. フォームから他の誰かのスクリプトに投稿する前に php を実行するにはどうすればよいですか?
  2. cURL を使用してフォームを 2 か所に POST する
4

1 に答える 1

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
        });
    }            
});
于 2012-09-04T19:25:53.357 に答える