【发布时间】:2012-06-18 02:01:38
【问题描述】:
我有一种情况,我需要一个 jQuery 回调来处理其范围之外的变量。为简单起见,假设如下代码:
$('#myBtn').on('click', function(e) {
var num = 1;
// assume this returns the following:
// { success : true, num : 1 }
$.getJSON('/api/get_number', {}, function(response) {
if ( response.success ) {
// here, num is unknown unless I define it as a
// global variable
num += response.num ;
}
});
console.log(num); // => want 2, get 1
});
我希望 num 在回调函数中可用。在不声明全局变量(在 onclick 函数之外声明 num )的情况下,有什么好的方法可以做到这一点?有没有办法将它作为参数传递而不必从服务器发送它?谢谢。
【问题讨论】:
-
num已成功更新,但之后您调用了console.log(num)。问题不在于范围,Ajax 是异步。在回调中移动console.log(num),你会看到。已经存在很多很多相关的问题。
标签: javascript jquery scope jquery-callback