未分配javascript/jquery全局变量

未分配javascript/jquery全局变量,javascript,jquery,Javascript,Jquery,我试图能够动态地重新加载将用于自动完成字段的变量,但在加载初始调用时遇到了问题。目前,我的javascript由以下内容组成: <script type="text/javascript"> var myList; function setTextSuggest() { $("#loginInput").autocomplete({ source: myList, appendTo: "#loginDiv" }); }; $

我试图能够动态地重新加载将用于自动完成字段的变量,但在加载初始调用时遇到了问题。目前,我的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>
如果我将getJSON请求设置为:

$.getJSON('StarWars.php', function(data) {
    myList = data.UserList;
    alert(myList);
    setTextSuggest();
});
然后它会显示姓名列表,但我的自动完成中仍然没有设置任何内容

编辑2:


我接受了杰克对这个问题的回答。虽然我的代码仍然存在问题(autocomplete尚未追加),但Jack的解决方案已经将其从关于全局变量和JSON数据检索的问题转移到了关于正确使用jQuery 1.8 autocomplete的问题。我觉得这是一个不同的问题,所以我将这个问题标记为完整-D.G.

从您的问题判断,
数据
已经是一个合适的数组/对象(而不是文本),因此您根本不需要
JSON.parse()

这就应该做到:

myList = data;

全球或局部范围的问题不是这里的问题。您的警报仍应触发并显示
[object object]
,因为您没有引用使用
数据声明的对象的任何属性

我创建了以下JSFIDLE作为参考:。您将看到上述观察确实发生


JSON输出是什么?

问题很可能在myList的范围内。将setTextSuggest和var myList放在document.ready中,它应该可以工作。我不同意。一旦这个回调被命中,myList将被重新分配到
JSON.parse(data)
,所以它之前发生了什么都不重要。除非
myList
在多个位置异步更改,否则这不应该是范围问题。我的建议是在JSON.parse行之前添加一个
debugger
语句,然后查看在解析之前的数据是什么,然后查看myList后面是什么。这样编辑myList时开始接受信息是正确的,但它仍然没有正确解析以用作javascript数组。不过,谢谢你指出这一点。@D.G.那是另一个问题;您正在使用哪个自动完成库?
myList = data;