オートコンプリートフィールドに使用する変数を動的にリロードできるようにしようとしていますが、最初の呼び出しのロードに問題があります。現在、私のJavaScriptはこれで構成されています:
<script type="text/javascript">
var myList;
function setTextSuggest() {
$("#loginInput").autocomplete({
source: myList,
appendTo: "#loginDiv"
});
};
$(document).ready(function() {
$.getJSON('StarWars.php', function(data) {
myList = JSON.parse(data);
//alert(myList); //DOES NOTHING WHEN UNCOMMENTED!!!!
setTextSuggest();
});
});
</script>
アラートのmyListを'data["info"]'に置き換えると、期待しているJSON情報が吐き出されます。ただし、アラートのコメントを解除してmyListで実行すると、何も出力されません。myListはここではグローバルスコープを持つことになっていますが、準備ができた関数内で割り当てられない理由がわかりません。
この問題を解決する方法について誰かが何か提案がありますか?
編集:
以下は、StarWars.php(json_encodeを介して作成された)から返されるオブジェクトです。
{"UserList":["Han Solo","Leia Organa","Luke Skywalker","Darth Vader","Emperor Palpatine","Chewbacca","R2-D2","C-3PO","Lando Calrissian","Lobot","Yoda","Obi-Wan Kenobi","Uncle Owen","Aunt Beru","Wedge Antilles","Boba Fett"]}
getJSONリクエストを次のように設定した場合:
$.getJSON('StarWars.php', function(data) {
myList = data.UserList;
alert(myList);
setTextSuggest();
});
次に、名前のリストが表示されますが、オートコンプリートにはまだ何も設定されていません。
編集2:
私はこの質問に対するジャックの答えを受け入れました。私のコードにはまだ問題がありますが(オートコンプリートはまだ追加されていません)、Jackのソリューションは、グローバル変数とJSONデータの取得に関する質問の領域から、jQuery1.8オートコンプリートを正しく使用することに関する質問に移しました。これは別の質問だと思うので、この問題を完了としてマークします。-DG