在ajax调用之后保留一个javascript变量

时间:2012-08-29 21:32:28

标签: javascript jquery ajax

我是javascript和jQuery的新手。 我正在使用ajax调用从我的服务器获取数据。事实是,我在调用后丢失了我的javascript变量.. 这就是我所做的:变量是在任何函数之外定义并在另一个函数中处理。

var a = 0;
function myfunction(url){
$.ajax({
        url: url,
        timeout: 20000,
        success: function(data){
                  // Do some stuff
                  // The a variable is now undefined
                },
        error: function(){
                  // Do some stuff
                }
       });
}

一切都运转正常,唯一的问题是我需要保留我的变量......但看起来它已经消失了......

有谁知道为什么?

由于

2 个答案:

答案 0 :(得分:3)

你说你在另一个函数中使用你的变量(但是没有向我们展示这个函数)。但是,该函数可能在您的AJAX调用完成之前运行。这就是“异步”的意思 - 它们不会同时发生。

要解决此问题,请在success回调中添加更多代码,只有在a变量发生更改后才能运行。

答案 1 :(得分:0)

这有效,网址确实在范围内。您应该检查的是,如果您收到错误 - 这将阻止成功运行(在其中投掷alert("error");或类似的东西进行测试。)

我在FireFox中使用Firebug来帮助我。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">

var a = 0;

function doSomething (url){
    $.ajax({
            url: url,
            timeout: 20000,
            success: function(data){
                      alert(a);
                    },
            error: function(){
                      // Do some stuff
                    }
           });
    }

</script>

<a href="#" onclick="doSomething('variableScope.html'); return false;">Do it</a>