如何构造ajax调用

问题描述:

目前我有两个javascript值的静态数组(d1和d2),然后将其传递给JavaScript对象(数据)。如何构造ajax调用

$(function() { 

    var d1, d2, data 
    d1 = [ 
    [1424131200000,20151],[1424217600000,22448],[1424304000000,27000],[1424390400000,30622],[1424476800000,30844],[1424563200000,23140],[1424649600000,20555] 
    ] 
    d2 = [ 
    [1424131200000,18664],[1424217600000,19149],[1424304000000,20415],[1424390400000,24617],[1424476800000,30278],[1424563200000,28808],[1424649600000,22032] 
    ] 

    data = [{ 
    label: "This Year", 
    data: d1 
    }, { 
    label: "Last Year", 
    data: d2 
    }] 
    var holder = $('#line-chart') 
    if (holder.length) { 
    $.plot(holder, data, chartOptions) 
    } 
}) 

我想改变我的代码来实现同样的事情,但加载两个Ajax调用的值,而不是静态定义值。但我有麻烦实现这一点。有人能帮助我,我可以如何修改我下面的内容来实现我上面定义的staticlly。

这里是我迄今为止...

$(function() { 
    var data 
    fetchData(function (data) { 
     console.log(data); 
    }); 
    var holder = $('#line-chart') 
    if (holder.length) { 
    $.plot(holder, data, chartOptions) 
    } 
}) 

function fetchData(callback) { 

    $.when(fetchThisYearsData(), fetchLastYearsData()).done(function (dataThisYear, dataLastYear) { 
     var data = []; 
     data.push(dataThisYear[0]); 
     data.push(dataLastYear[0]); 
     callback(data); 
    }); 
} 

function fetchThisYearsData() { 
    return $.ajax({ 
      url: "service/tranAnalysis/tranCounts.json?siteId=1&yearOffset=0", 
      dataType: 'json', 
      async: false 
     }); 
} 

function fetchLastYearsData() { 
    return $.ajax({ 
      url: "service/tranAnalysis/tranCounts.json?siteId=1&yearOffset=1", 
      dataType: 'json', 
      async: false 
     });  
} 

两个Ajax调用返回以下JSON ...

{"label":"This Year","data":[[1424131200000,20151],[1424217600000,22448],[1424304000000,27000],[1424390400000,30622],[1424476800000,30844],[1424563200000,23140],[1424649600000,20555]]} 

{"label":"Last Year","data":[[1424131200000,18664],[1424217600000,19149],[1424304000000,20415],[1424390400000,24617],[1424476800000,30278],[1424563200000,28808],[1424649600000,22032]]} 

当我的萤火调试它看起来像Ajax调用正在发生并且在回调函数内部填充了数据变量。但是当我接到$ plot的调用时,数据变量为空/空。

感谢

+0

有什么问题? – 2015-02-23 23:34:37

+0

对不起。我已更新帖子以帮助更多。该promlem是$ plot调用显示数据变量为空/空 – Richie 2015-02-23 23:39:57

这些AJAX调用是异步 - 所以你需要做的回调(否则你试图访问data而AJAX调用仍在进行中)的工作:

$(function() { 
    fetchData(function (data) { 
     var holder = $('#line-chart') 
     if (holder.length) { 
      $.plot(holder, data, chartOptions) 
     } 
    }); 
}) 
+0

谢谢你明白这一点。你可以告诉我还在学习Ajax。 – Richie 2015-02-23 23:59:32

+0

问题给你。 javascript构造数据和d1和d2的技术名称是什么?如果我必须猜测d1和d2是javascript数组,而数据是javascript对象? – Richie 2015-02-24 00:01:03

+1

收到的'data'对象是一个数组('[]'),并且来自您个人AJAX调用的响应是对象('{}')@Richie – tymeJV 2015-02-24 00:10:50