Javascript 在页面重定向之前将数据异步发布到服务器

Javascript 在页面重定向之前将数据异步发布到服务器,javascript,html,web,Javascript,Html,Web,这似乎是一个常见的问题,但我找不到相关的线程-请直接告诉我,如果我错过了什么 我们在我们的网站上使用某种点击跟踪器。 当用户单击链接时,此跟踪器会收到呼叫,我们希望将某些数据填充到其他服务器,并让用户继续单击url 因为我不想在这里等待服务器响应,所以我不想等待对这个ajax调用的响应。 但发生的事情是,我失去了这个电话,它永远不会到达服务器。 执行此操作的正确方法是什么 我正在使用top.window.location.href=url;因为我有时会打开一个Iframe function on

这似乎是一个常见的问题,但我找不到相关的线程-请直接告诉我,如果我错过了什么

我们在我们的网站上使用某种点击跟踪器。 当用户单击链接时,此跟踪器会收到呼叫,我们希望将某些数据填充到其他服务器,并让用户继续单击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;
    }

删除第二个
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调用。谢谢你的帮助。