0

我是 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
                }
       });
}

一切正常,唯一的事情是我需要保留我的变量......但看起来它已经消失了......

有谁知道为什么?

谢谢

4

2 回答 2

3

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

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

于 2012-08-29T21:37:35.163 回答
0

这有效,并且 url 确实在范围内。你应该检查的是你是否得到一个错误——这将阻止成功运行(在那里扔一个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>
于 2012-08-29T21:40:32.310 回答