This question already has an answer here:
这个问题在这里已有答案:
- How do I return the response from an asynchronous call? 31 answers
- Scope variable in ajax call 3 answers
如何从异步调用返回响应? 31个答案
ajax中的范围变量调用3个答案
function calcula(item) {
var produtos_total = 0;
$.getJSON(url, {id: 1, ajax: 'true'}, function(j){
var options;
for (var i = 0; i < j.length; i++) {
options = j[i].valor;
}
produtos_total = options;
// alert(produtos_total); < - HERE PRINT
}); // JSON
alert(produtos_total); // HERE NOT :'(
}
1 个解决方案
#1
0
Things are not happening in the order you think they are.
事情并没有按照你认为的顺序发生。
function calcula(item) {
// 1. start here
var produtos_total = 0;
// 2. set up an AJAX call
$.getJSON(url, {id: 1, ajax: 'true'}, function(j){
// 4. later, after the AJAX call completes
var options;
for (var i = 0; i < j.length; i++) {
options = j[i].valor;
}
produtos_total = options;
alert(produtos_total); // NOW we have a value
}); // JSON
// 3. leave the function
alert(produtos_total); // no value yet. AJAX hasn't completed
}
#1
0
Things are not happening in the order you think they are.
事情并没有按照你认为的顺序发生。
function calcula(item) {
// 1. start here
var produtos_total = 0;
// 2. set up an AJAX call
$.getJSON(url, {id: 1, ajax: 'true'}, function(j){
// 4. later, after the AJAX call completes
var options;
for (var i = 0; i < j.length; i++) {
options = j[i].valor;
}
produtos_total = options;
alert(produtos_total); // NOW we have a value
}); // JSON
// 3. leave the function
alert(produtos_total); // no value yet. AJAX hasn't completed
}