首页 > 解决方案 > 无法使用 jquery 在输入字段中获取 Woocommerce 计费电话

问题描述

我有一个 CF7 表单,需要获取Woocommerce 计费电话号码并使用 jQuery 函数在页面加载时将其显示在电话字段中。我在标题区域使用了这段代码:

// Get billing_phone_number On Quote Form

jQuery(document).ready(function(){
        jQuery('#mk-order-tel').val("<?php echo get_user_meta( get_current_user_id(), 'billing_phone', true ) ?>");
    });

但它返回原始 php 代码 ( <?php echo get_user_meta( get_current_user_id(), 'billing_phone', true ) ?>) 而不是电话号码;当我直接在 Woocommerce 的 php 文件中使用相同的 php 代码时,它可以正常工作。我应该怎么做才能通过 jQuery 运行 php 语法?

编辑


为了逃避上述问题,我尝试使用 ajax 获取数据,但这种方法也不起作用:

在functions.php中:

/* Get Customer Phone Number */

function my_ajax_handler(){
    global $woocommerce;
    $phone = get_user_meta( get_current_user_id(), 'billing_phone', true );
     ?>
    <script type="text/javascript">
    jQuery( function($){
    jQuery('#mk-order-tel').val("<?php echo json_encode($phone); ?>");
    });
    </script>
    <?php
}

add_action( 'wp_ajax_call_my_ajax_handler', 'my_ajax_handler' );
add_action( 'wp_ajax_nopriv_call_my_ajax_handler', 'my_ajax_handler' );


function my_quote_scripts() {
  wp_enqueue_script( 'my-ajax-script', get_stylesheet_directory_uri() . '/js/quote.js', array('jquery') );
  wp_localize_script( 'my-ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'my_quote_scripts' );

在 quote.js 中:

jQuery.ajax({
    
    type:"POST",
    url: my_ajax_object.ajax_url,
    data: { 'action': 'call_my_ajax_handler' }
    
})

我还可以做些什么 ?

标签: javascriptjquerywoocommercecontact-form-7

解决方案


这应该可行,由于引号,您会遇到异常

const tel = <?php echo get_user_meta( get_current_user_id(), 'billing_phone', true ) ?>;
jQuery(document).ready(function(){
   jQuery('#tel').val(tel);
});

或者您可以将单引号替换为双引号

jQuery(document).ready(function(){
        jQuery('#tel').val("<?php echo get_user_meta( get_current_user_id(), 'billing_phone', true ) ?>");
    });

推荐阅读