JS -尝试返回AJAX数据

JS — Trying to return AJAX data

本文关键字:AJAX 数据 返回 JS      更新时间:2023-09-26

我一直在努力使用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异步返回结果,mazesuccess外同步调用时不能定义

return {
        randomMaze: maze    
    };

尝试从函数中返回jQuery承诺对象$.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)];
            }
        }
    });

参见如何从异步调用返回响应?