如何将$ .get中的数据分配给变量,或者读取responseText

时间:2015-05-23 21:47:42

标签: javascript jquery ajax

我在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拉出并将其分配给我的词典 - > ranges 甚至尝试在范围内设置ranges: data,但内部有$ .get请求无效。

1 个答案:

答案 0 :(得分:1)

有很多错误的假设:

  

我显然无法将整个事物放在变量中,因为它是一个对象

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

  

全局变量不会有帮助,因为它不能超出其范围

这也不是真的,您可以将其设置为全局变量,但似乎它无法访问,因为您在设置之前尝试使用它。请注意,异步代码(即$.get)将在下一行之后执行 long (以计算机速度计)。这就是你传递一个回调函数或使用.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
});

如果这对你不起作用,那么从服务器获取数据或使用数据时的逻辑一定存在问题。