如何确保代码在 window.location.href 之前运行
How to make sure code runs before window.location.href
我有一个提交事件,因此当提交表单时,我会调用 AJAX API 来获取 POST 一些信息,然后我想 运行 代码在跟踪 Mixpanel 中的信息然后重定向页面的成功处理程序中。我目前拥有它,页面只是在不提交 Mixpanel 信息的情况下自行重定向。
我注释掉了 window 重定向,然后开始记录混合面板的内容。
这是我的代码:
$.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";
});
什么是确保混合面板内容被发送然后 window.location 发生的最佳方法。
需要等待 mixpanel.track
完成
您可以使用 callback
参数
If provided, the callback function will be called after tracking the event.
$.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";
}
);
});
我有一个提交事件,因此当提交表单时,我会调用 AJAX API 来获取 POST 一些信息,然后我想 运行 代码在跟踪 Mixpanel 中的信息然后重定向页面的成功处理程序中。我目前拥有它,页面只是在不提交 Mixpanel 信息的情况下自行重定向。
我注释掉了 window 重定向,然后开始记录混合面板的内容。
这是我的代码:
$.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";
});
什么是确保混合面板内容被发送然后 window.location 发生的最佳方法。
需要等待 mixpanel.track
完成
您可以使用 callback
参数
If provided, the callback function will be called after tracking the event.
$.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";
}
);
});