【问题标题】:Autocomplete not working when array is filled from database从数据库填充数组时自动完成功能不起作用
【发布时间】:2016-10-14 07:52:26
【问题描述】:

我曾经使用过这种代码,就像 1 年前一样,它确实有效。 现在我遇到了 php 代码问题当我用数据库中的元素填充我的数组时我无法执行自动完成,但是当我评论从数据库中获取代码的部分并取消注释时//$elements = array("25qt", "45tr", "az12");比自动完成的作品。 当我单独打开 php 文件并执行 var_dump($elements); 时,看起来数组已从数据库中正确填充。我相应地得到了​​数组的内容。知道为什么当我从数据库中填充数组时它不起作用,但如果我使用像 $elements = array("25qt", "45tr", "az12"); 这样的数组,它就会起作用。

HTML 代码:

<input id="tegjithepjeset" type="text" class="form-control">

jQuery 代码:

  <script type="text/javascript">
                    $(document).ready(function(){
                      $("#tegjithepjeset").autocomplete({
                      source:'allParts.php',
                      minLength:1

                      });
                    });
    </script>

php代码:

<?php
 // An empty array:
$data = array();

// Create connection
include 'dbinfo.php';
$con=@mysqli_connect("$host","$user","$password","$db");


if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$queryString = "SELECT code FROM  ".$table;
$query =mysqli_query($con,$queryString);

$elements = array();

while($rowDB=mysqli_fetch_array($query)){
    $elements[]="".$rowDB[0];

}
//var_dump($elements);

//$elements = array("25qt", "45tr", "az12");

//Loop through the array to find matches:
  foreach ($elements as $elm) {

    // Add matches to the $data array:
    if (stripos($elm, $_GET['term']) !== false) $data[] = $elm;//here we fill our empty array with values

  } // End of FOREACH.



// Return the data:
echo json_encode($data);

?>

【问题讨论】:

  • 有很多自动完成库。你用的是哪一个?
  • 你能显示 var_dump($elements); 的输出吗
  • 尝试替换 $elements[]="".$rowDB[0];与 $elements[]=$rowDB[0];
  • @RavinderReddy 这是 var dump 在修复您的建议之前给我的:array(20) { [0]=> string(0) "" [1]=> string(0 ) "" [2]=> 字符串(0) "" [3]=> 字符串(5) "14LU4" [4]=> 字符串(5) "25QT6" [5]=> 字符串(5) "14LU4" [6]=>字符串(5)“kj345”[7]=>字符串(5)“kdfer”[8]=>字符串(5)“25QT7”[9]=>字符串(5)“14LU5”[10 ]=> 字符串(5) "kj346" [11]=> 字符串(5) "14LU5" [12]=> 字符串(5) "kj346" [13]=> 字符串(5) "kdfer" [14]= > 字符串(5)“25QT8”[15]=>字符串(5)“14LU6”[16]=>字符串(0)“”[17]=>字符串(5)“14LU2”[18]=>字符串( 5)“25QT5”[19]=>字符串(5)“14LU3”}

标签: javascript php jquery autocomplete


【解决方案1】:

替换$elements数组代码如下所示。

$elements = array();
while($rowDB=mysqli_fetch_array($query)){
   // $elements[]="".$rowDB[0];
    $elements[]=$rowDB[0];
}

【讨论】:

  • 它的作品 thx ,顺便说一句,我很确定我在问这里之前做了你的建议,但我可能搞砸了别的东西。
  • @AlbanKaperi 很高兴我提供了帮助。接受为正确答案,以便其他人可以使用此代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 2014-08-15
  • 2021-09-09
  • 2017-02-28
  • 2020-11-14
相关资源
最近更新 更多