2016-11-03 49 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

添加正確的值表單的動作標籤,並嘗試這個辦法:

<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

謝謝@Maximo OK讓我試試這個 – Zeeshan

+0

確定我能在行動 – Zeeshan

+0

馬克西莫的方式被設定爲在WordPress在同一頁上刷新,以便在那種情況下我能在行動現場使用添加 – Zeeshan