var test = null;
$.get("/zeWebsite.php?blarg=421", function(data){
test = data.trim();
});
alert(test);
我一直认为在函数外部声明变量之前,即使在函数内调用,也可以访问变量。但是,我的测试变量仍然警告为null。
答案 0 :(得分:4)
由于$.get
函数是异步的,因此可能是订单问题。在警报已经触发之后,才会运行get的回调。
在get完成之前正在运行警报。您需要通过在回调中触发警报来确保在警报之前完成获取。
尝试:
var test = null;
$.get("/zeWebsite.php?blarg=421", function(data){
test = data.trim();
alert(test);
});
或
var test = null;
$.get("/zeWebsite.php?blarg=421", function(data){
test = data.trim();
outside();
});
function outside() { alert(test); }
答案 1 :(得分:1)
它还没有分配..
你可以简单地等待它:
SELECT DISTINCT(Num) AS ConsecutiveNums
FROM (
SELECT
Num,
@counter := IF(@prev = Num, @counter + 1, 1) AS how_many_cnt_in_a_row,
@prev := Num
FROM Logs y, (SELECT @counter:=1, @prev:=NULL) vars
) sq
WHERE how_many_cnt_in_a_row >= 3
但这段代码很糟糕。更好地直接触发回调:
var test = null, inprocess = true;
$.get("/zeWebsite.php?blarg=421", function(data){
test = data.trim();
inprocess = false;
});
var wait = setInterval(function(){
if (!inprocess) {
clearInterval(wait);
alert(test);
}
}, 500);
或使用像jquery deffered promise这样的东西:
var test = null;
$.get("/zeWebsite.php?blarg=421", function(data){
test = data.trim();
anyactionwithtest(test);
alert(test);
});
答案 2 :(得分:0)
这是因为你在get语句完全执行之前使用了变量。
测试将在get函数回调调用时获取值。
如果你在get函数中发出警告,那么它最后会调用。