这似乎是一个常见的问题,但我无法找到相关主题 - 如果我在这里错过了某些内容,请指导我。
我们正在使用某种点击跟踪链接到我们的网站。 当用户点击链接时,此跟踪器正在接听电话,我们希望将某些数据填充到其他服务器,并让用户继续点击该网址。
因为我不想在这里等待服务器响应 - 我不等待响应这个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;
}
答案 0 :(得分:1)
删除第二个top.window.location.href = url;
...正在破坏您的$.ajax()
来电......并且永远无法访问return false
。
考虑在setTimeout
来电时使用success:
和 $.ajax()
!
您可以在此处加倍处理您的方法,并保留第二个top.window.location.href
来电,但请将其放在setTimeout
块中,以防$.ajax()
次延迟。
这样,$.ajax()
调用应该首先发生,但如果没有,至少用户不会延迟,如果/当服务器故障挂起{{1调用。