我正在使用jQuery。我有一个从名为“get_cats”的远程服务器获取数据的函数。我调用它来填充返回值的数组。当AJAX完成时,我想返回值。 但它不起作用,返回的值是未定义的。这是非常基本但我无法看到它失败的地方。有没有人有线索?
$(function () {
var url = "http://someurl.com/service/";
var cats = [];
cats = get_cats(url);
function get_cats(url) {
var categories = [];
$.getJSON(url + "cats", function (data) {
$.each(data, function (i) {
categories.push(data[i].name);
});
return categories;
});
}
$(document).ajaxStop(function () {
console.log(cats); // fails and returns undefined :'(
});
});
答案 0 :(得分:4)
哦,没有AJAX是异步的,你不能从它返回任何东西。您应该仅在成功回调中使用AJAX请求的结果:
$(function () {
var url = "http://someurl.com/service/";
get_cats(url);
function get_cats(url) {
var categories = [];
$.getJSON(url + "cats", function (data) {
$.each(data, function (i) {
categories.push(data[i].name);
});
// Only here you can consume the results of the AJAX request
// Do not attempt to return them, it doesn't make any sense
console.log(categories);
});
}
});
答案 1 :(得分:-1)
您可以尝试:
$.ajaxSetup({async:false});
在AJAX调用之前。
但它将停止浏览器,同时将返回respone。