我在php中得到一个product对象,我想将其传递给JavaScript。
这是php代码:
<?php
// Add custom Theme Functions here
//
//gg stands for Gear Guide
function gear_guide_product_view( $atts ) {
//Get Ids from shortcode
$gg_attributes = shortcode_atts( array(
\'id\' => \'0\'
), $atts );
$gg_products_ids = Array();
$gg_products = Array();
//Push ID\'s into array
if ( strpos( $gg_attributes[\'id\'], \',\' ) !== false ) {
echo \'Multiple ID\\\'s!\';
$gg_products_ids = explode( \',\', $gg_attributes[\'id\'] );
} else {
echo \'Just one Id!\';
$gg_products_ids[] = $gg_attributes[\'id\'];
}
echo var_dump($gg_products_ids);
//Get product by ID\'s
foreach ( $gg_products_ids as $gg_product_id ) {
$gg_product = trim( $gg_product_id, \' \' );
array_push($gg_products, wc_get_product( $gg_product ));
}
echo var_dump( $gg_products );
wp_register_script( \'load_product_info\' , \'/wp-content/themes/flatsome-child/js/test.js\' , array( \'jquery\' ) );
wp_enqueue_script( \'load_product_info\' );
wp_localize_script( \'load_product_info\' , \'products\' , $gg_products);
}
add_action( \'woocommerce_loaded\', \'my_function_with_wc_functions\' );
add_shortcode( \'fsg\' , \'gear_guide_product_view\' );
这是我的JavaScript:
function load_product_info() {
console.log(products);
}
load_product_info();
当我
echo
ing公司
gg_products
变量看起来不错,但在
console.log
我得到一个包含两个空对象的数组。
有人知道为什么会这样吗?
如果需要更多信息,请告诉我,我会尽全力提供。
谢谢
SO网友:Andrea Somovigo
只要换一下
wp_localize_script( \'load_product_info\' , \'products\' , $gg_products);
with(EDITED->wp\\u localize\\u script()接受数组作为第三部分。)
wp_localize_script( \'load_product_info\' , \'products\' , array(\'current_products\'=>json_encode($gg_products ) ) );
将php对象转换为json字符串并构建数组。
然后在js文件中,将字符串转换为带有JSON的js对象。作语法分析
function load_product_info() {
var _products=JSON.parse( products )
console.log( _products.current_products );
}
load_product_info();