2016-04-04 22 views
0

ajax success関数の後に#mc-embedded-subscribe-formフォームを送信しようとしていますが、動作していないようです。関数の成功後に「OK」と警告すると、正常に機能しますが、関数をサブミットすると機能しません。ありがとう!フォームAjaxコールバック後に送信

<form action="//google.us12.mailchimp.com/subscribe/" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> 

<input type="email" id="mce-EMAIL" name="EMAIL" value="" placeholder="Email..."/> 

</form> 
<div class="email_submit" id="btn_email" style="">Subscribe</div> 

AJAX

$("#btn_email").click(function() { 

$('#btn_email').hide(); 
$('#btn_email_load').show(); 

var email = $('#mce-EMAIL').val(); 

$.ajax({ 

     type: "POST", 
     url: "classes/_mailchimp.php", 
     data:{ email: email, }, 

     cache: false, 

     success:function(data){ 

     if(data == 'ok'){ 

     $("form#mc-embedded-subscribe-form").submit(); 
     //alert("OK") 

     return false; 
     } 

     alert(data); 
     return false; 
} 
}); 
+0

は応答がありません 'ok' – John

+0

エラーが発生しているのですか、まったく反応していませんか? – Raif

+0

if(data == 'ok'){else {alert( 'data is not ok');}でelseを実行します。 } – John

答えて

0

をコメントしている私は最終的に使用して、この問題に対する解決策を見つけました。ありがとう。

$.ajax({ 

     type: "POST", 
     url: "classes/_mailchimp.php", 
     data:{ email: email, }, 
     async: false, //solution 
     cache: false, 

     success:function(data){ 

     if(data == 'ok'){ 

     $("form#mc-embedded-subscribe-form").submit(); 
     //alert("OK") 

     return false; 
     } 

     alert(data); 
     return false; 
} 
}); 
0

まあ。まず、ajaxをすでに使用している場合には必要ではないので、フォーム内のメソッドとアクションのattributtesを削除してください。

  1. フォームの属性を書き換えなど、実際の入力ボタン入れ

    :そこに私は、フォーム内のボタンを入れていることを見ていないしてください

    <form id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate"> 
    <!--We remove too the value attribute because is innecessary--> 
    <input type="email" id="mce-EMAIL" name="EMAIL" placeholder="Email..."/> 
    
    <input type="button" class="email_submit" id="btn_email" value="Suscribe"> </form> 
    
        <!--We are creating another div that it will show when #btn_email has been listened--> <div id="#btn_email_load" style="display:none"> 
    
  2. を。したがって、次はあなたのAjaxコードです。 AJAX呼び出しに: '偽非同期' に変更し、errosが

    $("#btn_email").click(function() { 
    
        $('#btn_email').hide(); 
        $('#btn_email_load').show(); 
    
        var email = $('#mce-EMAIL').val(); 
        $values = 'mail='+email; 
         $.ajax({ 
           type: "POST", 
           url: "classes/_mailchimp.php", 
           //Save all the data in a variable and not an object, if you want to save it with an object, use the short .post() ajax method to do it. In this case, we gonna save the data in a variable before declared as $values 
           data:$values, 
           cache: false, 
    
           success:function(data){ 
    
           if (data == 'ok'){ 
            alert('ok') 
           } 
         }); //close your ajax petition 
    }); 
    
関連する問題