Когда я делаю XMLHttpRequest, я также изменяю window.location.hash
.
Например, mysite.com/gallery/q#1
становится mysite.com/gallery/q#2
.
Когда это происходит, IE8, как журналы Fiddler и nginxshow, делает этот странный дополнительный запрос на 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-request не вызовет этот дополнительный запрос.
Еще один момент, на который следует обратить внимание - дополнительный запрос происходит не при каждом 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()
})
Я также попробовал эти links
, чтобы атрибут href
был установлен на #1
, #2
и т. Д. В HTML (и удалил e.preventDefault()
).Так что хеш меняется естественно.Нет, дополнительный запрос все равно делается.