wp_localize_script - >需要将“[0,6]”传递给JS

时间:2016-12-15 15:14:30

标签: javascript wordpress

我正在开发一个插件。我使用“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中设置括号并仅传递数字......

在浏览器源代码中,我看到有一个不需要的换行符: Source

修改 按照推荐,我现在尝试直接传递数组:

$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
);

这也不起作用,导致以下结果:

array

EDIT3: 我的JS知识非常有限,我无法在JS中进行调试。我设法输出了一个console.log(js_x_vars.hiddenDays)。我认为这可能会有所帮助。请看下面的图片:

console.log

如何解决这个问题?

谢谢

2 个答案:

答案 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)}