【问题标题】:JQUERY Autocomplete Not Showing Results That Are Returned From a php ScriptJQUERY 自动完成不显示从 php 脚本返回的结果
【发布时间】:2021-02-23 17:50:52
【问题描述】:

我正在尝试使用自动完成功能获取一些学校名称。但名称列表没有出现。当我输入例如“uni”时,它正在向 sclist.php 文件发出请求,例如 sclist.php?term=uni它会在网络控制台中返回这个作为响应:

uni
 [
     "University of Cambridge",
     "University of Michigan",
     "University of Oxford",
     "University of Virginia" 
]

我似乎找不到名称列表未出现的原因。这是我的第一个自动完成实现。非常感谢任何帮助。

autocom.php 文件:

<html lang = "en">
   <head>
      <meta charset = "utf-8">
      <title>jQuery UI Autocomplete functionality</title>
       <script src = "https://code.jquery.com/jquery-1.10.2.js"></script>
       <script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

      <!-- Javascript -->
      <script>
         $(function() {
            $( "#automplete" ).autocomplete({
               source: 'sclist.php',
               autoFocus:true
               });
         });
      </script>
   </head>

   <body>
      <!-- HTML -->
       <p>Type something</p>
         <input id = "automplete">
  </body>
</html>

sclist.php 文件:

<?php
require_once('connectToDB.php');
if (isset($_GET['term'])) 
    echo $_GET['term']."\n";
else 
  echo "not set";

require_once 'connectToDB.php';
$stmt=$portbleDocObj->prepare('SELECT name FROM Institution WHERE name LIKE :prefix ');
$stmt->execute(array( ':prefix'=>$_GET['term']."%") );

$returedData=array();
while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
    $returedData[] = $row['name'];
}
print_r($row);
echo(json_encode($returedData, JSON_PRETTY_PRINT));
?>

【问题讨论】:

  • if (isset($_GET['term'])) { echo $_REQUEST['term']."\n"; ???为什么不echo $_GET['term'] 你只是确保它在那里并设置
  • 你没有返回有效的 json,因为那个“uni”
  • @RiggsFolly 不是真的...PHP 语法很好。
  • @RiggsFolly 和print_r 不会弄乱语法。 echo $_REQUEST['term']."\n"; 可以。 $row 最后为空(null)。
  • @RiggsFolly 是的,但最后它只会在未设置的情况下返回 null ,否则数据库将不返回任何记录。如果您的意思是所有其余代码都应该包含在其中,那么您的评论 You are missing a { after the } else 有点误导。更好的解决方案是使用“return”或“die”。为什么它不起作用的主要问题是它不是有效的 json,因为 echo $_GET['term']."\n"; 行。 nullfalse 可以正常工作,通过 jQuery 解析 json 时不会出错。

标签: javascript php html jquery jquery-ui-autocomplete


【解决方案1】:

基本上,我刚刚对您的原始代码进行了一些整理。 请记住,当您返回 AJAX 调用时,您回显或打印的所有内容都将返回到 AJAX 代码进行处理。所以只返回应该返回的东西。此外,当机器与机器交谈时,PRETTY_PRINT 是不必要的

<?php

if ( ! isset($_GET['term'])) {
    echo "not set";
} else {
    require_once('connectToDB.php');
    $stmt = $portbleDocObj->prepare('SELECT name 
                                    FROM Institution 
                                    WHERE name LIKE :prefix');

    $stmt->execute( [':prefix' => $_GET['term']."%"] );
    $ret = [];
    while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
        $ret[] = $row['name'];
    }   
    echo json_encode($returedData);
}

【讨论】:

  • 是的,我发现这种方法更合乎逻辑。有效!!
猜你喜欢
  • 2014-07-22
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
相关资源
最近更新 更多