在本地化后从PHP到JS获取Foreach内的变量

时间:2016-06-05 作者:Nick

我相信我已经正确地将我的脚本排队并本地化了-我已经在DOM中显示了$q。现在我确信我错过了访问JS函数中变量的最后一个简单步骤。

以下是我的PHP:

add_action( \'wp_enqueue_scripts\', \'sdm_load_javascript_files\' );
function sdm_load_javascript_files() {

  wp_register_script( \'showMake\', get_template_directory_uri() . \'/js/functions.js\', array(\'jquery\'), \'1.1.0\', true );

  wp_enqueue_script( \'showMake\', get_template_directory_uri().\'/js/functions.js\', array( \'jquery\' ) );
  $inventory_makes = get_inventory_makes();
  wp_localize_script(  \'showMake\', \'q\', $inventory_makes );

}


function get_inventory_makes() {
  global $wpdb;
  $inventory_makes = $wpdb->get_results
    ("
      SELECT COUNT(inventory_id) as count_car, inventory_make
      FROM wp_dsfbjd_wpinventory_item
      GROUP BY inventory_make
    ");
  return $inventory_makes;
}
这是我的模板的一部分,我认为我缺少我需要的:

<ul>
  <?php
    $inventory_makes = get_inventory_makes();
    foreach ( $inventory_makes as $make )
    {            echo \'<li><a onclick="showMake(q.inventory_make)">\',$make->inventory_make,\'&nbsp;(\',$make->count_car,\')\',\'</a></li>\';
    }
  ?>
</ul>
最后,我的js函数:

function showMake() {

  console.log(q.inventory_make);

}
以及DOM:*

当我单击HTML元素时,我的控制台记录“未定义”-在我访问q.inventory\\u make后,我将刷新汽车列表以显示单击的make。

提前感谢您为我指明了正确的方向。

1 个回复
SO网友:sălă

你有wp_enqueue_script( \'showMake\' ); 两次从sdm\\u load\\u javascript\\u files函数中删除最后一行,看看它是否有效。