1

jquery のオートコンプリート プラグインをカスタマイズしようとしています。これは非常に単純なはずです。

autocomplete.php から名前のリストを取得し、「lookup」に送信することになっています。手動で入力すると機能しますが、関数 getnames() で名前を取得しようとすると機能しません。データを正しく返していますか? php ファイルも同様に機能します。

var options, a;

function getnames() {
    $.ajax({
        type:'POST',
        dataType:'json',
        data:{ },
        url:'autocomplete.php',
        timeout:1000,
        success:function (data) {
            return data;
        }
    });
}

// Doesn't work:

// DOC READY
$("#members").one("click", function () {
    options = { 
        lookup:getnames() 
    };
    a = $('#members').autocomplete(options);
});

// Works:

// DOC READY
$("#members").one("click", function () {
    options = { 
        lookup:["name1","name2"]
    };
    a = $('#members').autocomplete(options);
});

autocomplete.php

<?
header("Content-Type: application/json", true);
$info = array("name1","name2");
echo json_encode($info);
?>
4

2 に答える 2

1

最初に名前を取得し、ajax の応答を待ちます。到着したら、オートコンプリートを開始する必要があります。

例 (未テスト):

function getnames() {
    $.ajax({
        type:'POST',
        dataType:'json',
        data:{ },
        url:'autocomplete.php',
        timeout:1000,
        success:function (data) {
            options = { 
                lookup:data
            };
            a = $('#members').autocomplete(options);
        }
    });
}

$("#members").one("click", function () {
    getnames();
}
于 2012-06-03T13:24:49.297 に答える
-1

これを試して:

 function getnames() {
        var myData;
        $.ajax({
            type:'POST',
            dataType:'json',
            data:{ },
            url:'autocomplete.php',
            timeout:1000,
            success:function (data) {
              myData = data;
            }
        });
        return myData;
    }
于 2012-06-03T13:16:41.937 に答える