如何确保代码在window.location.href

时间:2016-08-17 14:15:49

标签: javascript jquery mixpanel

我有一个提交事件,以便在提交表单时,我会调用一些AJAX API调用一些信息,然后我想在成功处理程序中运行代码,跟踪Mixpanel中的信息,然后重定向页面。我目前拥有的页面只是重定向页面而不提交Mixpanel信息。

我注释掉了窗口重定向,然后mixpanel内容开始记录。

这是我的代码:

$.post('record', Record, function(data) {
    mixpanel.identify(data.user);
    mixpanel.people.set({
      '$email': data.user.email
    });
    return mixpanel.track('Event Created', {
      'User': data.user.email,
      'Event Date': Date.now(),
      'Event Name': $('#record-title').val()
    });

    // this ends up submitting without the mixpanel stuff submitting
    window.location.href = "https://" + window.location.host + "/records/dashboard";
});

确保mixpanel内容被发送然后window.location发生的最佳方法是什么。

1 个答案:

答案 0 :(得分:4)

需要等待mixpanel.track完成

您可以使用callback参数

  

如果提供,将在跟踪事件后调用回调函数。

$.post('record', Record, function(data) {
    mixpanel.identify(data.user);
    mixpanel.people.set({
      '$email': data.user.email
    });
    mixpanel.track(
      // event name
      'Event Created',
      // properties
      {
        'User': data.user.email,
        'Event Date': Date.now(),
        'Event Name': $('#record-title').val()
      },
      // callback
      function () {
        window.location.href = "https://" + window.location.host + "/records/dashboard";
      }
    );
});