在谷歌分析数据api中包含额外的回调参数

时间:2011-02-25 11:59:23

标签: javascript ajax callback google-analytics-api

考虑来自google analytics api docs的示例代码:

function getDataFeed() {
var myFeedUri = 'https://www.google.com/analytics/feeds/data' +
    '?start-date=2009-04-01' +
    '&end-date=2009-04-30' +
    '&dimensions=ga:pageTitle,ga:pagePath' +
    '&metrics=ga:pageviews' +
    '&sort=-ga:pageviews' +
    '&max-results=10' +
    '&ids=' + document.getElementById('tableId').value;

  myService.getDataFeed(myFeedUri, handleDataFeed, handleError);
}

function handleDataFeed(result) {
 // An array of Analytics feed entries.
 var entries = result.feed.getEntries();
 ....
}

我的javascript应用程序正在发送带有不同Feed参数的GA api请求,以及我的应用中不同的变量状态。由于异步响应,当同时发送多个请求时,在处理结果时会出现混乱。

有没有办法在请求中包含一个额外的参数给回调函数(handleDataFeed),在处理结果时可以拾取它?
或者还有其他方法可以解决这个问题,最好不必创建请求队列。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用闭包作为回调函数,以便通过词法范围提供额外的数据:

function getDataFeed() {
    var myFeedUri = 'https://www.google.com/analytics/feeds/data' +
        '?start-date=2009-04-01' +
        '&end-date=2009-04-30' +
        '&dimensions=ga:pageTitle,ga:pagePath' +
        '&metrics=ga:pageviews' +
        '&sort=-ga:pageviews' +
        '&max-results=10' +
        '&ids=' + document.getElementById('tableId').value;

      var extraData = "extra data here";

      myService.getDataFeed(myFeedUri, function(result) {
         // An array of Analytics feed entries.
         var entries = result.feed.getEntries();

         // Extra data still in scope here
         alert(extraData);

         ....
      }, handleError);
    }