我正在尝试使用wp_localize_script()
将一些php值发送到脚本。
以下是文件的一部分inc/show-event.php
.
if( $price ) {
$pricefortwo = ceil( ( 2 * $price) - ( 0.2 * $price ) );
$savefortwo = ( 2 * $price) - $pricefortwo;
$priceforthree = ceil( ( 3 * $price) - ( 0.333 * $price ) );
$saveforthree = ( 3 * $price) - $priceforthree;
$priceforretake = ceil( 0.5 * $price );
$saveforretake = $price - $priceforretake;
// Setting the session variables
$_SESSION[\'price\'] = $price;
$_SESSION[\'price_for_two\'] = $pricefortwo;
$_SESSION[\'price_for_three\'] = $priceforthree;
$_SESSION[\'price_for_retake\'] = $priceforretake;
$session_array = array(
\'price\' => $_SESSION[\'price\'],
\'price_for_two\' => $_SESSION[\'price_for_two\'],
\'price_for_three\' => $_SESSION[\'price_for_three\'],
\'price_for_retake\' => $_SESSION[\'price_for_retake\']
);
wp_localize_script( \'init_show_calendar\', \'session_param\', $session_array );
}
在此之后,当我尝试使用对象名称时
session_param
在里面
init_show_calendar.js
它抛出一个js错误
session_param
未定义。但是当我在中使用以下代码时
functions.php
.
$session_array = array(
\'price\' => $_SESSION[\'price\'],
\'price_for_two\' => $_SESSION[\'price_for_two\'],
\'price_for_three\' => $_SESSION[\'price_for_three\'],
\'price_for_retake\' => $_SESSION[\'price_for_retake\']
);
wp_localize_script( \'init_show_calendar\', \'session_param\', $session_array );
它返回变量,但不返回最新的值,它返回存储在页面刷新中的值。
仅供参考:Theshow-event.php
在插件中按以下方式调用
add_action(\'wp_ajax_get_event\', array($this, \'render_frontend_modal\'));
function render_frontend_modal() {
require_once AEC_PATH . \'inc/show-event.php\';
}
如果你想了解更多信息,请告诉我。
最合适的回答,由SO网友:Maruti Mohanty 整理而成
我需要在会话中设置不同的价格,并在js脚本中获取这些价格。我正在使用jquery session plugin 设置和获取会话,但它不是由php设置会话,所以我尝试使用wp_localize
并在js脚本中进行设置。
根据@Milo的线索,我使用json_encode
并在ajax处理程序端将它们设置为会话。
这就是我所做的:--
show-event.php
文件
$output = array(
\'price\' => $_SESSION[\'price\'],
\'price_for_two\' => $_SESSION[\'price_for_two\'],
\'price_for_three\' => $_SESSION[\'price_for_three\'],
\'price_for_retake\' => $_SESSION[\'price_for_retake\']
);
$this->json_encode( $output );
在ajax处理程序中,我做到了:--
// Setting the session value for the prices.
jQuery.session.set(\'price\', data.price);
jQuery.session.set(\'price_for_two\', data.price_for_two);
jQuery.session.set(\'price_for_three\', data.price_for_three);
jQuery.session.set(\'price_for_retake\', data.price_for_retake);
以上设置了不同价格的会话值。
我也可以通过array
但我做到了,这很好。