我是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
}
});
}
一切都运转正常,唯一的问题是我需要保留我的变量......但看起来它已经消失了......
有谁知道为什么?
由于
答案 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>