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>

contact.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

私が気づいた2つのこと:

  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 に答える