例如
function getResult(field) {
$.ajaxSetup ({cache: false, async: false});
$.get("api.php?field="+field, function(i) {
result = i;
});
return result;
};
问题在于结果变得全球化。如果我var result = i;
,则父函数(getResult)无法看到变量result
。
有一种聪明的方法吗?
我发布的代码工作正常。我已经将我的AJAX调用设置为同步完成。
答案 0 :(得分:6)
function doIt(arr) {
var result = [];
$.each(arr, function (y_u_key_jQuery_y_u_no_fix_api, value) {
result.push(value);
});
return result;
}
通常你想要做的是在外部函数中创建一个局部变量,内部函数通过闭包范围操作
答案 1 :(得分:1)
让我们假设你的AJAX调用是同步的。你可以试试这个:
function getResult(field) {
var result;
$.get("api.php?field="+field, function(i) {
result = i;
});
return result;
};
这样,变量result
就不再是全局的了。
答案 2 :(得分:0)
$.get()
是异步调用。试图从中返回一些东西不会像你想象的那样起作用。如果你想对结果做一些事情,你应该在成功的回调中做到这一点。
Here是关于get的文档。
答案 3 :(得分:0)
您实际上无法从异步调用中返回值,而是必须依赖响应将由响应到达时调用的回调函数处理。
function getResult(field, callback) {
$.get("api.php?field=" + field, callback);
};
<强> USAGE 强>
getResult("someFieldName", function(data) {
var result = data;
// do something with the response from server
});