0

jquery オートコンプリート スクリプトに問題があります。これが私のコードです:

戻る

<?php
require_once("include/global.php");
require_once("include/con_open.php");
$q = "select name, id from tbl_hotel";
$query = mysql_query($q);
if (mysql_num_rows($query) > 0) {
    $return = array();
    while ($row = mysql_fetch_array($query)) {
    array_push($return,array('label'=>$row["name"],'id'=>$row["id"]));
    }
}
echo(json_encode($return));

フロント

<input type="text" id="hotel" />

<link rel="stylesheet" type="text/css" href="http://cdn0.favehotels.com/v2/style/autocomplete/jquery.ui.all.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>

<script type="text/javascript">                     
$(document).ready(function() {
    $( "#hotel" ).autocomplete({
        position: { my : "right bottom", at: "right top" },
        source: "hotel-search.php",
        minLength: 2,
        select: function( event, ui ) {
            window.location.href=ui.item.id;
        }                   
    })._renderItem = function( ul, item ) {
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append($("<a></a>").text(item.label))   
            .appendTo(ul);
    };
});
</script>

source: "hotel-search.php"戻る[{"label":"A", "id":"1"}]

source: "hotel-search.php"を次のように変更するとsource: [{"label":"A", "id":"1"}]

まだ機能しません。

しかし、それを変更するとsource: [{label:"A", id:"1"}]正常に動作します。

「hotel-search.php」を返さないようにするにはどうすればよいです{label:"Hotel A", id:"1"}{"label":"Hotel A", "id":"1"}

4

2 に答える 2

0

jQuery$.getJSONが JSON 応答を JSON オブジェクトとして取得して解析できるようにします。

$.getJSON('hotel-search.php', function(jsonData) {
   $("#hotel" ).autocomplete({
        position: { my : "right bottom", at: "right top" },
        source: jsonData,
        minLength: 2,
        select: function( event, ui ) {
            window.location.href=ui.item.id;
        }                   
    })._renderItem = function( ul, item ) {
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append($("<a></a>").text(item.label))   
            .appendTo(ul);
    };
});
于 2012-07-03T09:21:23.670 に答える
0

Naufal Abu Sudais: 「まだ動作しません」とは、すべてのリストを表示し続けるオートコンプリートのことです。「B」と入力しても「A」と表示され続ける

AJAX 呼び出しで使用するautocompleteと、GET パラメータがサービスtermに送信されます。

hotel-search.php?term=WhatYouTypeInAutocomplete

したがって、最短のリストが必要な場合$_GET['term']は、PHP ファイルで を使用して応答項目をフィルタリングする必要があります。

于 2012-07-03T08:49:36.700 に答える