1

JqueryUi オートコンプリートに対して ajax 内で応答を取得しようとしていますが、ドロップダウン ボックスで結果を取得できません。ここにスクリプトがあります=>

$(function(){
    $("#user_key" ).autocomplete({
        source: function(){
            var http = false;
            if (window.XMLHttpRequest){
                http = new XMLHttpRequest();
            } else {
                http = new ActiveXObject("Microsoft.XMLHTTP");
            }
            if (http){
                http.open("POST","./ajax/autocomplete.php",true);
                http.onreadystatechange = function(){
                    if (http.status==200 && http.readyState==4){
                        this.value = http.responseText;
                    }
                };
                http.send(null);
            }
        },
        close: function(){

        }
    });
});

例を簡単にするために、ドロップダウンボックスでこの「こんにちは」を取得する方法と、スクリプトの下部にあるclose:関数 を使用する必要がある理由autocomplete.phpのみが書かれています:)<?php echo "hello"; ?>

PS。this.value = http.responseTextを書くとき、たとえば alert(http.responseText) を書くときに .php ファイルから結果を取得するときに、私は間違いを犯していると思います。結果がドロップダウンボックスに書き込まれることをどのように示すことができますか?

4

1 に答える 1

2

ドキュメントと私が行ったいくつかのテストによると、sourceプロパティを設定する必要があるのは、phpスクリプトのURLだけです。

jQuery UIコードtermは、クエリ文字列のパラメータを、そこで指定したURLに送信します。source.php?term=hello

したがって、この例では、JSON配列を返すPHPスクリプトでquerystringパラメーターを正しく処理すると、次のように機能するはずです。

$(function(){
    $("#user_key" ).autocomplete({
        source: "./ajax/autocomplete.php",
        minLength: 2
    });
});

返されるJSONデータは次の形式である必要があります。

[{ "id" : "Item1", "label" : "Item1", "value" : "Item1" }, 
{ "id": "Item2", "label" : "Item2", "value" : "Item2" }]
于 2012-08-02T18:09:26.227 に答える