2

在参考了许多以前关于这个主题的问题和答案之后,我仍然很难过。我试图引用存储用户联系人列表的数据库。作为最初的开始,我保持简单,只允许通过电子邮件(而不是电子邮件、名字和姓氏等)进行参考。

我有以下链接:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $( ".emaillist" ).autocomplete({
        source: "contacts.php"}); });
</script>

联系人.php:[更新]

<?php
session_start();
include "scripts/sqlconnect.php";
$id = $_SESSION['id'];
$csql = mysql_query("SELECT * FROM db WHERE id='$id' AND email LIKE '%".mysql_real_escape_string($_GET['term'])."%'");
$contactlist = array();
while($row = mysql_fetch_assoc($csql)){
    $contactlist[] = $row['email'];
}
$contactlist = json_encode($contactlist);
header('Content-Type: application/json');
echo "$contactlist";
?>

最后是相关的 HTML 片段:

<input name="semail" type="text" class="emaillist" id="semail"/>

关于我做错了什么有什么建议吗?我似乎无法确定问题所在。

4

1 回答 1

3

我注意到的两件事:

  1. 你永远不会输出的内容$contactlist
  2. 您没有设置适当的Content-Type标题。

所以你想这样做:

$contactlist = json_encode($contactlist);
header('Content-Type: application/json');
echo $contactlist;

根据文档,传递给 AJAX 源的值被调用term,因此您应该在查询中使用它,而不是semail

...  AND email LIKE "%'. mysql_real_escape_string($_GET['term']) .'%"');
                                                         ^^^^-- Here
于 2012-09-17T19:16:13.610 回答