WooCommerce通过AJAX调用函数.php编写的方法

时间:2018-03-13 08:14:34

标签: wordpress woocommerce hook-woocommerce

我在functions.php中定义了一个方法,如下所示:

add_filter('woocommerce_get_price', 'return_custom_price', $product, 2);
function return_custom_price($price, $product) {  
  return 'something';
}

此外,使用以下代码创建了一个选择框:

add_action('woocommerce_before_order_notes', 

'wps_add_select_checkout_field');
function wps_add_select_checkout_field( $checkout ) {
    //echo '<h2>'.__('Select Price').'</h2>';
    woocommerce_form_field( 'selectCountry', array(
        'type'          => 'select',
        'class'         => array( 'wps-drop' ),
        'label'         => __( 'Select Price' ),
        'options'       => array(
            'AU'        => __( 'AU', 'wps' ),
            'NZ'    => __( 'NZ', 'wps' ),
            'OTHER' => __( 'IE', 'wps' ),
            'UK'    => __( 'GB', 'wps' )
        )
 ),
    $checkout->get_value( 'daypart' ));
}

我已将JS排队如下:

add_action( 'wp_enqueue_scripts', 'my_enqueueforAjax' );
function my_enqueueforAjax() {
    wp_enqueue_script( 'custom_price', get_template_directory_uri() . '/js/selectCountry.js', array('jquery') );
    wp_localize_script('custom_price', 'ajax_var', array(
     'url' => admin_url('admin-ajax.php'),
     'nonce' => wp_create_nonce('ajaxnonce')
     ));
}
add_action( 'wp_ajax_return_custom_price', 'return_custom_price' );
add_action( 'wp_ajax_nopriv_return_custom_price', 'return_custom_price' );

我在selectCountry.js文件中编写了以下Jquery代码:

var jExample = jQuery.noConflict();
jExample( document ).ready(function() {
    jExample('#selectCountry').on('change', function() {
        var value = jExample('#selectCountry').val();

jExample.ajax({
            type: "post",
            url: ajax_var.url,   
            data: "action=return_custom_price&nonce="+ajax_var.nonce+"&country="+value,  
            success: function(response){
                 // Do your stuff here once ajax response is returned
            console.log(response);
            }
        });
    });
});

当我更改selectbox值时,jquery函数不会调用。我该如何解决这个问题?有什么错吗?邀请您的建议。

0 个答案:

没有答案