我正在开发一个插件。我使用“wp_localize_script”将变量传递给JS。总而言之,我传递了16个变量。所有这些都有效,除了一个,我需要帮助才能让它发挥作用......
最初JS代码行看起来像这样:
hiddenDays: [0,6],
如果我像这样静态配置PHP中的变量,那么变量将被传递给JS:
$settings = array(
'hiddenDays' => [0,6]
);
wp_localize_script( 'settings', 'js_x_vars' , $settings );
现在我尝试这样:
$db_value = "0,6"; // Would originally be retrieved from database
$hiddendays = "[" . $db_value . "]";
$settings = array(
'hiddenDays' => $hiddendays
);
wp_localize_script( 'settings', 'js_x_vars' , $settings );
这不起作用,我尝试了很多类似的变化。我还尝试在JS中设置括号并仅传递数字......
修改 按照推荐,我现在尝试直接传递数组:
$db_value = "0,6"; // Would originally be retrieved from database
$settings = array(
'hiddenDays' => array($db_value)
);
wp_localize_script( 'settings', 'js_x_vars' , $settings );
这也不起作用...... 它会像这样工作:
'hiddenDays' => array(0,6)
EDIT2: 按照建议,我也尝试将其作为实际数组传递:
$db_value = "0,6";
$db_value = explode(',', $db_value);
$settings = array(
'hiddenDays' => $db_value
);
这也不起作用,导致以下结果:
EDIT3: 我的JS知识非常有限,我无法在JS中进行调试。我设法输出了一个console.log(js_x_vars.hiddenDays)。我认为这可能会有所帮助。请看下面的图片:
如何解决这个问题?
谢谢
答案 0 :(得分:0)
原因是你传递的是字符串,而不是数组。你需要做的是通过,
从db中分解该字符串,这将把你的字符串变成一个实际的数组
$db_value = "0,6";
$db_value = explode(',', $db_value);
$settings = array(
'hiddenDays' => $db_value // equals to two element array with 0 and 6 as elements
);
答案 1 :(得分:0)
我终于把它弄清楚了......
按照explode:
的建议构建数组$db_value = "0,6";
$db_value = explode( ',', $db_value );
" var_dump($ dbvalue)"的结果:
array(2){[0] => string(1)" 0" [1] =>字符串(1)" 6" }
现在的解决方案:
$db_value = "0,6";
$db_value = array_map( 'intval', explode( ',', $db_value ) );
" var_dump($ dbvalue)"的结果:
array(2){[0] => int(0)[1] => int(6)}