我正在使用jQuery,我有以下代码:
var result = [];
if ( some_condition ) {
result = [...]
} else {
$.ajax({
url: some_url,
data: some_data,
dataType: 'json',
success: function(data) {
items = data
}
});
result = items
}
// Playing with the 'result' variable...
当items is not defined
为some_condition
时,上述代码会生成错误“false
”(我认为这是因为变量范围不正确)。
我想将result
变量设置为AJAX响应数据,但我不知道如何解决问题。
注意:我正在尝试这样做,因为我想使用result
变量在之外的if ... else
语句(即, 在上面代码中的if ... else
语句之后。
答案 0 :(得分:6)
只需将ajax函数设为noync
即可var result = [];
if ( some_condition ) {
result = [...]
} else {
$.ajax({
url: some_url,
data: some_data,
dataType: 'json',
async: false,
success: function(data) {
items = data
}
});
result = items
}
答案 1 :(得分:3)
这样做:
由于您将其称为异步,因此应在回调函数
中指定它var result = [];
if ( some_condition ) {
result = [...]
} else {
$.ajax({
url: some_url,
data: some_data,
dataType: 'json',
success: function(data) {
result = data;
validateResult(result);
}
});
}
为了更好地理解。
您的结果数组是一个全局变量。