使用 php 从数据库填充初始化 jquery 数组时,Jquery 标签编辑器不起作用


Jquery tag editor is not working while populating initializing jquery array from database with php

我正在尝试在我的项目上创建一个标记系统。 我在我的网站上使用这个 github tagedit 插件作为标记系统。他们正在使用 jquery 代码,如 jquery-1.10.2.min.js etc(他们自己的).此工具中有一个 PHP 代码,它将使用标签名称和标签 ID 初始化数组。初始化后,jQuery 将处理所有客户端工作(标记工具)。

现在的问题是他们在代码中手动初始化了该数组。但由于显而易见的原因,我不能这样做。我必须从数据库动态初始化此数组。每当我尝试动态初始化它时,整个事情都不起作用。我调试了很多,我发现在下一步初始化后,他们正在检查if(isset($_GET['term'])),而这个isset($_GET['term'])总是返回 false。为什么??

这是他们的代码::

$autocompletiondata = array(
   3 => 'Hazel Grouse',
   4 => 'Common Quail',
   5 => 'Common Pheasant',
   6 => 'Northern Shoveler',
   7 => 'Greylag Goose',
   8 => 'Barnacle Goose',
   9 => 'Lesser Spotted Woodpecker',
   10 => 'Eurasian Pygmy-Owl',
   11 => 'Dunlin',
   13 => 'Black Scoter',
   14 => 'Eurasian Wryneck',
   15 => 'Little Owl',
   16 => 'Eurasian Curlew',
);
if(isset($_GET['term'])) {
   $result = array();
   foreach($autocompletiondata as $key => $value) {
      if(strlen($_GET['term']) == 0 || strpos(strtolower($value), strtolower($_GET['term'])) !== false) {
         $result[] = '{"id":'.$key.',"label":"'.$value.'","value":"'.$value.'"}';
    }
}
echo "[".implode(',', $result)."]";
}
上面的代码工作正常。整个标记系统

工作正常。但是当我尝试从数据库动态初始化该数组时,它不起作用。整个标记系统停止工作。

这是我的代码::

//$link is database connection link
$query = mysqli_query($link,"select id,tag_name from tags order by no_of_times_used desc");
$autocompletiondata=array();
while($row = mysqli_fetch_object($query)) 
{ 
$autocompletiondata +=array($row->id => $row->tag_name);
}
if(isset($_GET['term'])) {
   $result = array();
   foreach($autocompletiondata as $key => $value) {
      if(strlen($_GET['term']) == 0 || strpos(strtolower($value), strtolower($_GET['term'])) !== false) {
          $result[] = '{"id":'.$key.',"label":"'.$value.'","value":"'.$value.'"}';
      }
   }
echo "[".implode(',', $result)."]";
}
现在

正如我所说,上面的代码不起作用,整个标记系统现在停止工作

注意:我已经以多种方式尝试了我的代码,例如以这种($autocompletiondata[$row->id] = $row->tag_name;)方式使用in while循环初始化数组,而不是在while loop之外声明$autocompletiondata=array();.很多尝试,但没有一个对我有用。

我可以保证的是 mu dbConfig.php 绝对没问题,因为我与数据库的其他交互运行良好。

现在我的问题是如何解决这个问题?我应该如何使用数据库中的值初始化数组以使这个标记系统工作?

isset 函数检查变量是否已声明。当给定变量不存在时,此函数返回 false。

$_GET 是一个 url 参数数组。因此,如果isset($_GET['term'])返回 false,这意味着当前 url 不包含名为 term 的参数。因此,尝试添加类似yourlink.com?term=something的内容并按回车键...

此外,要使用数据库中的数据初始化数组,您应该编写以下内容

  //---
 $query = mysqli_query($link,"select id,tag_name from tags order by no_of_times_used desc");
 $autocompletiondata=array();
 while($row = mysqli_fetch_object($query)) 
 { 
   $autocompletiondata[$row->id]=$row->tag_name;
 }
 //-----