我一直在努力使用 jQuery 从 AJAX 调用中获取数据。我正在使用 RequireJS,这样我的 JavaScript 就更易于维护/模块化。我只使用 RequireJS 几天,所以我可能做得对,也可能做得不对。只是寻找一种方法来保持我的 JS 模块化和干净。
这是我到目前为止所拥有的。我知道它正在获取正确的数据,因为如果我 console.log(data[Math.floor(Math.random()*data.length)])
,数据就在那里。 JSON 文件很长,所以我不会向您展示这一点,请相信我的话 — 它有效。
var maze;
define(["jquery"], function($){
$.ajax("js/mazes.json", {
dataType: "json",
type: "get",
success: function(data){
var maze = data[Math.floor(Math.random()*data.length)];
}
});
return {
randomMaze: maze
};
});
我也尝试过这个(在匿名函数中声明 maze
)
define(["jquery"], function($){
var maze;
$.ajax("js/mazes.json", {
dataType: "json",
type: "get",
success: function(data){
var maze = data[Math.floor(Math.random()*data.length)];
}
});
return {
randomMaze: maze
};
});
我不知道我做错了什么。只是想返回data[Math.floor(Math.random()*data.length)]
最佳答案
jQuery.ajax()
success
异步返回结果,maze
在 success
之外同步调用时可能无法定义在
return {
randomMaze: maze
};
尝试返回 jQuery Promise 对象 $.ajax()
从函数,异步返回对象 success
回调
// return jQuery promise object
return $.ajax("js/mazes.json", {
dataType: "json",
type: "get",
success: function(data){
// return object as jQuery promise value
return {
randomMaze: data[Math.floor(Math.random()*data.length)];
}
}
});
关于javascript - JS — 尝试返回 AJAX 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31932693/