【发布时间】:2014-01-13 16:56:07
【问题描述】:
这似乎是一个常见问题,但我找不到相关主题 - 如果我在这里遗漏了什么,请指导我。
我们正在对我们的网站使用某种点击跟踪器。 当用户单击链接时,此跟踪器会收到调用,我们希望将某些数据填充到不同的服务器,并让用户继续访问单击的 url。
因为我不想在这里等待服务器响应——我不想等待对这个 ajax 调用的响应。 但发生的事情是我失去了这个电话,它永远不会到达服务器。 执行此操作的正确方法是什么?
我正在使用 top.window.location.href = url;因为我有时会在 iframe 中打开。
function onClick(url, clickedFrom) {
var testClick = ServerHost + "click";
var dataObject = buildCommonData();
$.ajax({
dataType: 'post',
contentType: "text/json; charset=utf-8",
data: dataObject,
url: testClick,
async: true,
success: function (response) {
top.window.location.href = url;
},
});
top.window.location.href = url;
return false;
}
【问题讨论】:
-
您需要等待响应才能卸载页面。
-
$.ajax()调用没有足够的时间调用服务器,因为第二个top.window.location.href调用 @Kiran。但是是的@briler,如果你必须确保跟踪器被触发,你确实需要等待。 -
@digitalextremist ajax 调用已经被放置,但是回调不会被执行,因为他正在重定向。
-
@Kiran ... OP 说:发生的情况是我失去了这个电话,它永远不会到达服务器 ...这与响应或回调无关。 .. 第二个重定向(在
success:块之外)正在破坏调用。 -
您应该在成功、失败和错误块上使用
top.window.location.href = testClick;。我认为testClick更好。删除返回前的最后一个重定向。
标签: javascript html web