function test() {
var flag1 = false;
if ($('#field1').attr('value') || !$('#field1').attr('value')) {
$.ajaxSetup({
cache: false
});
$.getJSON("test_term.php", {
'term1': $("#cde").attr('value'),
'cd3': $("#cde3").attr('value')
}, function(data) {
if (data[0].stss == 'K') {
var status = data[0].stss;
flag1 = true;
} else if (data[0].stss == 'U' || data[0].stss == '') {
flag1 = false;
return;
}
});
}
alert("ANonymous value" + flag1);
return flag1;
}
如何从 getJson()
中使用的匿名函数返回“flag1”值?
它总是返回 false
,这是在顶部引用的。
最佳答案
按照您的尝试方式,这是不可能的。
Ajax 调用是异步的,只要准备好就会返回。您传递给 getJSON()
的内部函数在外部函数 test()
完成运行后运行良好。
这意味着 - 当 Ajax 调用返回时您希望发生什么 - 将其放入回调函数中。请勿使用标志和返回值。
例如
function do something(flag) {
// do something
}
function test() {
if ($('#field1').attr('value') || !$('#field1').attr('value')) {
$.ajaxSetup({
cache: false
});
$.getJSON("test_term.php", {
'term1': $("#cde").attr('value'),
'cd3': $("#cde3").attr('value')
}, function(data) {
if (data[0].stss == 'K') {
var status = data[0].stss;
doSomething(true);
} else if (data[0].stss == 'U' || data[0].stss == '') {
doSomething(false);
}
});
}
}
关于jquery - jquery中如何从匿名函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114382/