如何从$中分配数据.获取一个变量,或者读取responseText

How to assign a data from $.get to a variable, or read the responseText

本文关键字:一个 变量 responseText 读取 或者 分配 获取 数据      更新时间:2023-09-26

我已经得到了这个字典在JS -

{
    ranges: {
        "year 2013": ["01/01/2013", "31/12/2013"]
    }
    opens: 'left',
    format: 'dd/MM/yyyy',
    separator: ' to ',
    startDate: START_DATE,
    endDate: END_DATE,
    minDate: '01/01/2005',
    maxDate: '31/12/2023',
}

现在我想范围是动态的,而不是硬编码的,所以我设法使用这个请求拉数据:$.get("accyears", function(data){data})显然,我不能把所有的东西都放在一个变量中,因为它是一个对象。

尝试将'data'设置为全局变量是没有用的,因为它在其作用域之外是不可引用的。

我只能在控制台日志或警报的作用域中使用它。我怎么把data拉出来并赋值给字典-> ranges甚至尝试在范围内设置ranges: data,但有$。

有很多错误的假设:

显然我不能把整个内容放在变量中因为它是一个对象

是的,你可以,它非常简单,你可以访问它作为一个关联数组或点操作符(object.key)。

全局变量没有帮助,因为它不能在其作用域之外被引用

这也是不正确的,你可以将它设置为一个全局变量,但它可能看起来是不可访问的,因为你试图在它设置之前使用它。请注意,异步代码,即$.get,将在下一行之后执行(就计算机速度而言)。这就是为什么要给它传递回调函数或使用.done函数,这样就可以在接收到数据后处理数据。

很难推荐如何解决你的问题,但我建议创建一个回调函数来处理你收到的数据。

一个例子:

$.get(..., function (data) {
   globalData = data;
})
// use globalData

这个将不起作用,因为,如前所述,$.get是异步的,您将尝试在设置之前使用globalData

如何使用回调函数:

$.get(..., function(data) {
    // use data like you wanted to use globalData
}); 

或者类似的功能,只是语法有点不同:

$.get(...).done(function(data) {
    // use data like you wanted to use globalData
});

如果这不能为您工作,则一定是在从服务器获取数据时出现问题,或者是在使用数据时出现逻辑问题。