gpt4 book ai didi

javascript - IE 对哈希更改发出额外的 GET 请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:36:09 24 4
gpt4 key购买 nike

当我发出 XMLHttpRequest 时,我还更改了 window.location.hash

例如,mysite.com/gallery/q#1 变为 mysite.com/gallery/q#2

发生这种情况时,如 Fiddler 和 nginx 日志所示,IE8 会向 mysite.com/gallery/(即 404)发出这个奇怪的额外请求。

页面没有重新加载,它就像一个 XMLHttpRequest。

GET http://mysite.com/gallery/ HTTP/1.1
Accept: */*
Referer: http://mysite.com/gallery/q
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)
Accept-Encoding: gzip, deflate
Host: mysite.com
Connection: Keep-Alive

另外,哈希更改或 Ajax 请求不会触发这个额外的。

另一件需要注意的事情——额外的请求不是在每个 Ajax 请求上都会发生。它看似随机发生。

会不会是nginx配置错误?或者它只是众多 IE8 错误之一?

有解决办法吗?我不想要这个额外的负担。


更新

这是 Ajax 代码($ 代表 jQuery):

var id = link.getAttribute('data-id')

var xhr = $.ajax({
cache: false,
url: '/stock-items',
method: 'GET',
data: { id: id },
dataType: 'json'
})
xhr.success(function (data) {
if (currentId === id) {
toggleLoader(false)
displayData(data)
}
})

和哈希操作代码:

function setHash(link) {
var index = $(link).index()
globals.location.hash = index + 1
}

还尝试了具有相同结果的哈希符号:

globals.location.hash = '#' + index + 1

Ajax 请求是在点击图库图像链接时:

links.on('click', function (e) {
setHash(this)
loadData(this)
e.preventDefault()
})

我还尝试将这些 linkshref 属性设置为 #1#2 等等on 在 HTML 中(并删除了 e.preventDefault())。这样hash自然就变了。不,无论如何都会提出额外的要求。

最佳答案

访问者是否从另一个页面重定向到受影响的页面?如果是这样,则很可能是一个已知的 IE 错误。

看看这个类似的问题:javascript location.hash refreshing in IE

关于javascript - IE 对哈希更改发出额外的 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8967183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com