[英]Keep a javascript variable after an ajax call
我是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
}
});
}
一切工作正常,唯一的事情是我需要保留变量……但看起来好像已经消失了..
有人知道为什么吗?
谢谢
您说您正在其他函数中使用变量(但不要向我们展示该函数)。 但是,该功能可能在您的AJAX调用完成之前正在运行。 这就是“异步”的含义-它们不会同时发生。
要解决此问题,请在success
回调中添加更多代码,该代码仅在a
变量更改后才能运行。
这可以正常工作,并且该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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.