Dojo addOnUnload和xhrGet

时间:2011-07-06 10:17:33

标签: ajax dojo xmlhttprequest

我有通过API解锁数据集的功能

function unlockData() {

    var xhrArgs = {
        url: "/api/unlockData",
        handleAs: "json",
        content: {
            account_id: accountId
          },
        load: function(data) {
            if(data) {
                alert("Data unlocked");
            } else {
                alert("Something went wrong.");
            }

        },
        error: function(error) {
           alert("error:"+error);
        }
    }

    var deferred = dojo.xhrGet(xhrArgs);

}

称为onUnload

dojo.addOnUnload(window, "unlockData");

重新加载时,我收到以下错误消息:

Error: Unable to load /api/unlockData?account_id=981782 status:0

我可以在卸载时发出xhrGet请求吗?顺便说一句,如果没有调用卸载,该功能可以正常工作。

1 个答案:

答案 0 :(得分:0)

由于Xhr调用是异步,因此在“卸载”期间调用此调用将始终失败,因为浏览器不再位于此页面中。

无论如何,由于在addOnUnload期间触发window.onbeforeunload,您可以设置“计时器”循环来检查AJAX调用是否成功。

强烈不推荐这种做法。在“窗口”关闭期间使用AJAX调用是完全没必要的,您应该考虑使用表单来调用脚本同步