Ajax表单提交为wordpress

时间:2015-08-27 20:54:47

标签: ajax wordpress

所以,这是我的代码:

形状checkout.php

<form id="rh_checkout_ajax" name="checkout" method="post" class="checkout woocommerce-checkout"  enctype="multipart/form-data">

<?php if ( sizeof( $checkout->checkout_fields ) > 0 ) : ?>

    <?php do_action( 'woocommerce_checkout_before_customer_details' ); ?>

    <div class="col2-set" id="customer_details">
        <div class="col-1">
            <?php do_action( 'woocommerce_checkout_billing' ); ?>
        </div>

        <div class="col-2">
            <?php do_action( 'woocommerce_checkout_shipping' ); ?>
        </div>
    </div>

    <?php do_action( 'woocommerce_checkout_after_customer_details' ); ?>


<?php endif; ?>

<?php do_action( 'woocommerce_checkout_before_order_review' ); ?>

<div id="order_review" class="woocommerce-checkout-review-order">
    <?php do_action( 'woocommerce_checkout_order_review' ); ?>
</div>

<?php do_action( 'woocommerce_checkout_after_order_review' ); ?>

<input value="send" type="submit" name="buy_product" style="display:none;" id="rh_product_add_done_click"></input>
</form>

my_js.js

//Ajax checkout submit
jQuery('#rh_checkout_ajax').submit(function(e){

var name = jQuery(this).attr('name'); 

jQuery.ajax({ 
     data: {action: 'contact_form', name:name},
     type: 'post',
     url: ajaxurl,
     success: function(data) {
          alert(data); 

    }
});

});

的functions.php

//Ajax submit callback
add_action('wp_ajax_contact_form', 'contact_form');
add_action('wp_ajax_nopriv_contact_form', 'contact_form');

function contact_form()
{
   echo $_POST['name'];    
}

通常会发生什么

因此,当购买产品时,用户会被重定向到order-detail页面,显示他/她刚购买的产品。

我希望它发生什么:

我正在努力使表单通过ajax提交,并且用户不会重定向到订单详细信息页面,而是保留在产品页面中(因此,不刷新也不重定向)。

我试图通过上面的ajax提交表单,但运气不大。

有人可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须阻止表单正常提交。在您的js文件中,添加e.preventDefault()。像这样:

jQuery('#rh_checkout_ajax').submit(function(e){
    e.preventDefault();
    var name = jQuery(this).attr('name'); 

    jQuery.ajax({ 
         data: {action: 'contact_form', name:name},
         type: 'post',
         url: ajaxurl,
         success: function(data) {
             alert(data); 

        }
    });

});