我有一个非常大的JS脚本,包含许多函数,回调等等...我的第一个操作之一是从Ajax调用中获取值。然后我将此值设置为在脚本开头定义的全局变量,以便我可以反复引用该值...例如,确定用户语言的值。
// define my global var at the top of my script..
var globalOpCo = "";
// I then try to give this a value in the next function I call...
$.ajax({
url:"getURL",
type:"POST",
dataType:"json",
success:function(data){
if(data === null){
// do something...
}else{
// set the current language...
globalOpCo = data.Opco.toLowerCase();
console.log(globalOpCo); // this is the value I want it to be from data.Opco.toLowerCase()
// now do something....
}
},
error:function(xhr, ajaxOptions, thrownError){
console.log(xhr.status);
console.log(xhr.statusText);
console.log(thrownError);
}
});
现在稍后在我的脚本中,我希望将globalOpCo
传递给另一个函数,就像这样......
$("#aButton").on("click", function(){
anotherFunction(globalOpCo); // I want to pass the globalOpCo as an arguement but its value isn't get updated above?
});
但是globalOpCo
的值是一个空字符串!在运行上面的ajax调用之前或之前,无法单击#aButton。有人可以帮忙吗?
答案 0 :(得分:2)
默认情况下禁用您的按钮,在定义globalOpCo后在成功函数中添加onclick,并在设置onclick时启用它。奖励:现在它不再需要全局,因为需要它的代码紧挨着它。哪个好=)
答案 1 :(得分:0)
好的,我可能已经解决了这个问题!它是范围,变量在$("document").ready(function(){})
内定义,而调用它的函数在$("document").ready(function(){})
之外
答案 2 :(得分:0)
全局变量只是全局对象的属性,在浏览器中为window
。您可以通过明确使用window.globalOpCo
来避免确定范围问题。