在GET请求完成之前阻止加载页面

时间:2016-05-06 17:19:04

标签: javascript jquery ajax

我正在尝试将图片附加到通过图片网址向第三方营销网站发送GET请求的网页上。我完全承认我不完全理解如何通过GET请求实现这一点,这个第三方API插件没有相关文档(如果这就是它的名字),但我知道它发送了我看到的这个GET请求在Chrome开发工具中的“网络”下。

此GET请求正在根据我正在检查的API仪表板工作。然而,问题是有时候GET请求失败并且数据没有发送到服务器。这种情况经常发生在我第一次访问此页面的一段时间内它发送此GET请求并且未缓存图像的路由时,GET请求被取消,因为该图像实际上是绑定到表单的提交。我的理解是该页面将在此GET请求完成之前加载下一页,因此GET请求将被取消。随后GET请求返回的速度要快得多,这可能是由于路由被缓存(我相信无论如何)并且它成功通过。

我想知道可以做什么让我等到这个GET请求完成。我尝试查看AJAX并通过它发送此请求,因此我可以使用同步调用GET,但这是折旧的,所以它是一个非首发。如果我直接使用AJAX调用,似乎我遇到了跨域访问控制的问题(奇怪的是,通过下面的图像调用访问域名没有问题。)

以下是作为表单一部分的onclick()事件调用的函数。单击的元素是与该表单关联的图像/提交按钮。

function appendImageToBody() {
        var imgTag = document.createElement("IMG");
        var imageURL = 'http://imgur.com/fakeimage';

        imgTag.setAttribute("src", imageURL);
        imgTag.setAttribute("width", "0");
        imgTag.setAttribute("height", "0");
        imgTag.setAttribute("id", "Img");
        document.body.appendChild(imgTag);
}

1 个答案:

答案 0 :(得分:0)

经过多一点挖掘后,我将此函数放在jQuery.onBeforeUnload中,即使在下一页加载后,GET请求也会完成。 https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

我想这可以解决这个问题,但我仍然很想知道如何/为什么。当这个GET请求完成时,新页面会重新加载,所以我对如何将图像附加到不存在的页面感到有点困惑。

相关问题