Javascript 在页面重定向之前将数据异步发布到服务器
这似乎是一个常见的问题,但我找不到相关的线程-请直接告诉我,如果我错过了什么 我们在我们的网站上使用某种点击跟踪器。 当用户单击链接时,此跟踪器会收到呼叫,我们希望将某些数据填充到其他服务器,并让用户继续单击url 因为我不想在这里等待服务器响应,所以我不想等待对这个ajax调用的响应。 但发生的事情是,我失去了这个电话,它永远不会到达服务器。 执行此操作的正确方法是什么 我正在使用top.window.location.href=url;因为我有时会打开一个IframeJavascript 在页面重定向之前将数据异步发布到服务器,javascript,html,web,Javascript,Html,Web,这似乎是一个常见的问题,但我找不到相关的线程-请直接告诉我,如果我错过了什么 我们在我们的网站上使用某种点击跟踪器。 当用户单击链接时,此跟踪器会收到呼叫,我们希望将某些数据填充到其他服务器,并让用户继续单击url 因为我不想在这里等待服务器响应,所以我不想等待对这个ajax调用的响应。 但发生的事情是,我失去了这个电话,它永远不会到达服务器。 执行此操作的正确方法是什么 我正在使用top.window.location.href=url;因为我有时会打开一个Iframe function on
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;
}
删除第二个
top.window.location.href=url代码>。。。这正在破坏您的$.ajax()
调用。。。而返回false
则永远不会到达
考虑在$.ajax()调用中使用设置超时和成功:
您可以在此处将方法加倍,并保留第二个top.window.location.href
调用,但将其放入setTimeout
块中,以防出现$.ajax()
延迟
通过这种方式,$.ajax()
调用应该首先发生,但如果没有,至少当服务器出现故障挂起$.ajax()
调用时,用户不会被延迟。在卸载页面之前需要等待响应。$.ajax()
调用没有足够的时间调用服务器,因为第二个top.window.location.href
call@Kiran。但是是的@briler,如果必须确保触发了跟踪器,您确实需要等待。@Digital极端主义ajax调用已经发出,但是在他重定向时不会执行回调。@Kiran。。。OP说:发生的事情是,我失去了这个电话,它再也无法到达服务器。。。这与响应或回调无关。。。第二个重定向(在success:
块之外)正在关闭呼叫代码>关于成功、失败和错误块。我认为testClick
更好。在返回之前删除最后一个重定向。我考虑了超时问题-但我不想让用户在这里等待。为您更新了我的答案。谢谢,我在ajax成功与失败上得到了top.window.location.href=url,还添加了timeout属性。因为我不想让用户等待太久。删除了超出ajax范围的top.window.location.href=url,因为它无法发送ajax调用。谢谢你的帮助。