/ / jQuery ajaxの問題 - 私の関数を動作させることができない - jquery、ajax

jQuery ajaxの問題 - 私の関数を動作させることができない - jquery、ajax

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);
?>

回答:

回答№1は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();
}

回答№2の場合は-1

これを試して:

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