繁体   English   中英

未分配javascript / jquery全局变量

[英]javascript/jquery global variables not being assigned

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

当我用'data [“info”]'替换警报中的myList时,它会吐出我期待的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:

我接受了杰克对这个问题的回答。 虽然我的代码仍然存在问题(自动完成尚未附加),但杰克的解决方案已将其从全局变量和JSON数据检索问题的范围中移除,并进入了关于正确使用jQuery 1.8自动完成的问题。 我觉得这是一个不同的问题,所以我将此问题标记为完整。 -DG

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

这应该做:

myList = data;

全球或地方范围的问题不是这里的问题。 您的警报仍然应该触发并显示[object Object]因为您没有引用使用data声明的对象的任何属性。

我创建了以下jsFiddle作为参考: http//jsfiddle.net/u8rVj/ 您将看到上述观察确实发生。

什么是JSON输出?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM