有很多类似的问题,但我认为我对此有新的看法。
我正试图通过ajax调用第三方网址以进行跟踪,因此我并不在乎响应。只是它已发送。
跟踪网站已为我们提供了一个网址,他们希望用户单击该网址,然后301重定向到我们的产品页面。我们希望显示一个模式窗口而不是重定向到产品页面,例如快速查看按钮。
问题在于浏览器向原始网址发送了两个请求,这将使我们的统计数据产生偏差。 查看chrome中的网络面板,我可以看到其中之一来自jQuery的ajax函数,并且具有与之关联的调用堆栈。第二个请求似乎来自“点击”事件。
如果我从该功能中删除了ajax请求,则不会发送任何请求。
我创建了一个模拟服务器以进行进一步测试。当它返回200时,仅发送了一个请求。当我将其更改为301时,发送了两个请求。 奇怪的是,两个请求都针对原始URL。甚至没有尝试遵循重定向。
我有些困惑,希望有人可以给我一些下一步的指导。
这是调用$ .ajax的函数:
function externalRequest(settings) {
return new Promise((resolve, reject) => {
$.ajax(settings)
.done((data, textStatus, jqXHR) => {
const { status, statusText } = jqXHR;
resolve({
data,
status,
statusText,
});
})
.fail(reject);
});
}
通用第三方标记功能:
function thirdPartyTracking(url) {
Ajax.externalRequest({
method: 'GET',
url,
}).catch((error) => {
console.error('Error sending tracking tag: ', url, error);
});
}
这叫做:
thirdPartyTracking('https://tracking.com/click?sku=123&uid=abc456')
网络面板上的结果:
谢谢