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

时间:2014-01-13 16:56:07

标签: javascript html web

这似乎是一个常见的问题,但我无法找到相关主题 - 如果我在这里错过了某些内容,请指导我。

我们正在使用某种点击跟踪链接到我们的网站。 当用户点击链接时,此跟踪器正在接听电话,我们希望将某些数据填充到其他服务器,并让用户继续点击该网址。

因为我不想在这里等待服务器响应 - 我不等待响应这个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;
    }

1 个答案:

答案 0 :(得分:1)

删除第二个top.window.location.href = url; ...正在破坏您的$.ajax()来电......并且永远无法访问return false


考虑在setTimeout来电时使用success: $.ajax()

您可以在此处加倍处理您的方法,并保留第二个top.window.location.href来电,但请将其放在setTimeout块中,以防$.ajax()次延迟。

这样,$.ajax()调用应该首先发生,但如果没有,至少用户不会延迟,如果/当服务器故障挂起{{1调用。