AJAX获取数据后,成功方法里的返回数据如何声明成全局变量
var token = '';
$.ajax({
url : 'getToken.php',
data : {userId : params.userId, type : params.type},
dataType : "json",
type : "POST",
}).done(function(data) {
ret = $.parseJSON(data);
token = ret.data.token;
alert(token); // 这个有数据
});
alert(token); // 这个是空, 而我需要的就是在外面操作这个数据
在上面用window.token也是过了, 不行. 求指点.
------解决方案--------------------你alert的时候ajax还不一定返回数据了呢
用window.setInterval定时的去检测这个数据有没有 有的话alert
或者放在ajax的回调里
------解决方案--------------------你这里写的ajax是异步请求,即javascript是非阻塞运行的,在$.ajax还没运行完alert命名可能就执行了,当然这二个时候是没有数据的
把你的ajax设置为同步请求就可以了,设置$.ajax的async属性为false就可以了
------解决方案--------------------可以使用楼上说的阻塞方式,
但是回调函数应该更加适合使用,也更合理。
[code=javascript]var token = '';
var callback = function(){
alert(token);
}
$.ajax({
url : 'getToken.php',
data : {userId : params.userId, type : params.type},
dataType : "json",
type : "POST",
}).done(function(data) {
ret = $.parseJSON(data);
token = ret.data.token;
alert(token); // 这个有数据
callback();//调用回调函数。
});