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