Javascript 使用json_encode和PHP在另一个div中使用jQuery添加一个类

Javascript 使用json_encode和PHP在另一个div中使用jQuery添加一个类,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,我正在使用WordPress将get_categories放入一个变量,然后尝试从get_categories数组中获取类别名称,然后将其传递到一个jQuery变量中,让它对照jQuery中的另一个条件进行检查 到目前为止,我能够正确地从get_categories获取数据,然后使用json_encode将该数组解析为json格式 但是我要挂断的是,我只需要来自WordPress的get_categories数组的name,然后将其传递到jQuery以运行条件查询 我不确定正确格式化的正确方法,

我正在使用WordPress将get_categories放入一个变量,然后尝试从
get_categories
数组中获取类别名称,然后将其传递到一个jQuery变量中,让它对照jQuery中的另一个条件进行检查

到目前为止,我能够正确地从
get_categories
获取数据,然后使用
json_encode
将该数组解析为json格式

但是我要挂断的是,我只需要来自WordPress的
get_categories
数组的
name
,然后将其传递到jQuery以运行条件查询

我不确定正确格式化的正确方法,这样jQuery就可以解释它,而不会对它产生太大的脾气

以下是我目前掌握的情况:

代码:

  <?php $test = get_categories('taxonomy=stuff&type=item'); ?>
            <script type="text/javascript">
            jQuery(document).ready(function($) {
              var $things = <?php echo json_encode($test); ?>
              $(".this-div").each(function() {
                var $item = $(this).attr("title");
                if ($things.indexOf($item) > -1) {
                  $(this).addClass('current');
                }
              });
            });
            </script>

jQuery(文档).ready(函数($){
var$things=
$(“.this div”).each(function(){
var$item=$(this.attr(“title”);
如果($things.indexOf($item)>-1){
$(this.addClass('current');
}
});
});
我尝试了
$test[0]->name
,但它只返回其中一个值,而不是所有值。
因此,我不确定我是否正确执行了此操作,或者是否有更好的方法。

不能说我使用了word press,但如果
get_categories()
只返回一个JSON字符串,您可以执行以下操作:

<p class="categories"><?php echo get_categories('taxonomy=stuff&type=item')></p>
<script>
    let categories = JSON.parse($('.categories').text());
    $(".this-div").each(function() {
      let $div = $(this);
      if (categories.includes($div.attr("title")) {
        $div.addClass('current');
      }
  });
</script>

用以下方法解决了这个问题:

<?php 
$test = get_categories('taxonomy=item&type=things');
$names = array_column($test, 'name'); ?>

<script type="text/javascript">
jQuery(document).ready(function($) {
  var $things = <?php echo json_encode($names); ?>;
  console.log($things);
  $(".element").each(function() {
    var $state = $(this).attr("title");
    if ($things.indexOf($state) > -1) {
      $(this).addClass('current');
    }
  });
});
</script>

jQuery(文档).ready(函数($){
var$things=;
console.log($things);
$(“.element”)。每个(函数(){
var$state=$(this.attr(“title”);
如果($things.indexOf($state)>-1){
$(this.addClass('current');
}
});
});

从这里开始:

不确定php是否有内置的map函数,但从概念上讲,您可以循环使用$test元素并从所有名称构建另一个数组,这就是您将响应到$thingsYeah的内容,我也尝试了
foreach
循环,但这会产生一些可笑的结果。加上所有的努力都让我走上了
json_encode
的道路,看起来它应该可以工作,但我觉得我遗漏了一些东西…你需要在最后使用json_encode将结果数组转换为javascript能够解析成数组以存储$things的结构,但是您必须首先创建给定的名称数组。否则,您可能会将其保留为这样,然后您的
if()
条件将更改为类似
if($things.find(function(element){return element.name===$item;})的内容
Ref。这是另一件我不确定的事情,我应该把
foreach
循环按操作顺序放在哪里,以将这些名称存储到一个变量中,然后用jQuery取出。谢谢!是的,
get_categories
不能作为json返回,因此它需要以某种方式进行编码或解析。但这确实有助于清理jQuery部分。