2016-11-03 13 views
-2

ページをリフレッシュせずにajaxを使用してフォームを同じページに送信したいだけです。だから私の下のコードは、フォームを提出しますが、$ _POST値は選択されません...私はそれを適切に提出しています。私は何のエラーもないが、私のフォームは提出していないと思う。Ajaxフォームをページリフレッシュなしでサブミットする

HTMLフォーム

<form action="" id="fixeddonation" name="fixeddonation" method="post"> 


<input type="hidden" class="donerProject" name="donerProject" value="test"> 
<input type="hidden" class="donersubProject" id="donersubProject" name="donersubProject" value="general"> 
<input type="hidden" class="donerLocations" id="donerLocations" name="donerLocations" value="general"> 

<input type="hidden" class="donationpagetype" name="donationpagetype" value="general"> 
<input type="hidden" class="projectadded" id="projectadded" name="projectadded" value="1"> 
<input type="hidden" value="302" id="pageid" name="pageid"> 
<div class="classsetrepet generalfixshow fullrow row fixed-page"> 
<div class="col-6 text-right">  
<div class="prize">Fixed Amount £</div>  
</div> 
<div class="col-6"> 
<input type="text" id="oneoffamt" name="oneoffamt" class="oneoffamt validatenumber"> 
<span class="amt_error"></span> 
</div> 
</div> 

<br> 
<div class="row"> 
<div class="col-6"></div> 
<div class="col-6"> 
<input type="submit" id="submit_gen_one" class="btn-block" value="submit" name="submit_gen_one"> 
</div> 
</div> 
</form> 

Ajaxコード

jQuery('#fixeddonation').on('submit', function (e) { 

     e.preventDefault(); 

     jQuery.ajax({ 
      type: 'post', 
      url: 'wp-admin/admin-ajax.php', 
      data: jQuery('#fixeddonation').serialize(), 
      success: function (data) { 
       alert(data); 
       alert('form was submitted'); 
       jQuery('#collapse2').addClass('in').removeAttr('aria-expanded').removeAttr('style'); jQuery('#collapse1').removeClass('in').removeAttr('aria-expanded').removeAttr('style'); 

      } 
     }); 
     return false; 
    }); 

答えて

0

は、フォームのactionタグに正しい値を追加し、これを試してみてください。

<script> 

$(document).ready(function() { 

var form = $('#fixeddonation'); 

    form.submit(function(ev) { 
    ev.preventDefault(); 


    var formData = form.serialize(); 
    $.ajax({ 
     method: 'POST', 
     url: form.attr('action'), 
     data: formData 
    }) .done(function(data) { 
     alert(data); 
    }); 
    }); 

}); // end .ready() 

</script> 

はfalseを返す必要はありません。あなたが既にpreventDefault()を最初に呼び出したので、

+0

ありがとうございます@マキシモ大丈夫私はこれを試してみましょう – Zeeshan

+0

私は何を追加できますか? – Zeeshan

+0

MaximoフォームはWordPressの同じページでリフレッシュするように設定されているので、そのシナリオでは何を使用できるのですか? – Zeeshan

関連する問題