0

それだけです...私は次のようなjQueryコードを持っています:

jQuery:

<script type="text/javascript">
$(document).ready(function() {
    $('#val').autocomplete({
        source: "search.php",
    });
});
</script>

HTML:

<input class="searchInput" id="val" name="val" type="text" />

PHP (search.php):

$con = mysql_connect("localhost","root","");
$db = mysql_select_db("x",$con);
$sql = mysql_query("SELECT * FROM opcionais WHERE Opcional LIKE 'Nokia%'");
$result = array();
while($linha = mysql_fetch_array($sql)){
    $result[] = $linha['Opcional'];
}
echo json_encode($result);

しかし、これが取引です... search.phpを開くと、jsonのすべての結果が表示されました...次に、オートコンプリートを試すと、彼はすべての結果をロードします...たとえば...

search.php で私は受け取ります:

[「ノキア」、「ノキア Lumia」]

わかりました...オートコンプリートで、「LUMIA」と入力すると、ウィジェットも「Nokia」をロードします。Buuutt.....「search.php」で取得した結果をコピーして、jquery スクリプトの変数に貼り付けると、オートコンプリートが正常に機能します。

jQueryコードと一緒に変数に結果を直接入れた場合のように、結果の外部ソースが機能しない理由を誰でも知っていますか?

事前に感謝し、私の下手な英語で申し訳ありません:-)

編集:

だから私は何が起こるかを示すためにもっと画像を入れます...そのように機能していません.SOURCEが「$('#val').val()」を受け入れることができないようです...

私のjquery getステートメントが機能するsearch.php search.php コード

解決した

私は自分で問題を解決しました...

<script type="text/javascript">
$(document).ready(function(){
    $('#val').keyup(function(){
        var x = "search.php?ac=" + $('#val').val();
        $('#val').autocomplete({
            source: x,
            minLenght:5,
        });
    });
});
</script>

すべての応答に感謝します:-)

4

2 に答える 2

1

JavaScript 変数を使用すると autocomplete(AC) が機能するのは自然なことです.AC 自体がその変数 (配列) から一致する結果を見つけるためです。一方、 を呼び出すとsearch.php、AC は返されたものをすべて一致結果として扱い、それ以上一致を試みません。

実際、PHPスクリプトでのクエリは何らかの形で間違っていると思います。それをデバッグする必要があります。入力するLUMIAと、スクリプトは ['Nokia'] などを返します。つまり、このクエリを実行しています。

SELECT * FROM opcionais WHERE Opcional LIKE 'Nokia%'

それは実行する必要がありますが

SELECT * FROM opcionais WHERE Opcional LIKE 'LUMIA%'

では、どうぞ。

編集 :

LUMIAajax経由でキーワードをまったく送信していないようです。ドキュメントを確認してください。あなたがする必要があるのは、このようにjsを変更することです:

$('#val').autocomplete({
    source: "search.php?keyword="+$('#val').val(),
});

そしてphpで:

$sql = mysql_query("SELECT * FROM opcionais WHERE Opcional LIKE 'Nokia ".$_GET['keyword']."%'");

または多分より良い結果のために:

$sql = mysql_query("SELECT * FROM opcionais WHERE Opcional LIKE '%".$_GET['keyword']."%'");

さらに、クエリで準備済みステートメントを使用することをお勧めします。これらのmysql関数は古くなっています。

于 2012-10-29T20:44:10.307 に答える
0

返される形式は次のようになります。

[
      {
            "label": "Nokia",
            "value": "1"
      },
      {
            "label": "Lumia",
            "value": "2"
      }
]

もちろん、いくつかのバリエーションがあり、オートコンプリートの新しいバージョンではスタイルが少し異なる場合があります。ただし、常にラベルと値のペアである必要があります。

dataType: 'json'リクエストにオプションを追加することもできます。

そのような JSON を返すことも機能すると思います。

{1:'Nokia',2:'Lumia'}
于 2012-10-29T19:52:57.897 に答える