从外部调用jquery函数中的变量

时间:2015-07-23 03:08:05

标签: javascript jquery function variables

var test = null;

$.get("/zeWebsite.php?blarg=421", function(data){
    test = data.trim();
});

alert(test);

我一直认为在函数外部声明变量之前,即使在函数内调用,也可以访问变量。但是,我的测试变量仍然警告为null。

3 个答案:

答案 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函数中发出警告,那么它最后会调用。