Internet Explorer не будет обновлять содержимое, обработанное AJAX, при обновлении? - PullRequest
3 голосов
/ 23 декабря 2011

У меня есть страница, которая получает содержимое из файла XML с помощью вызова Jquery AJAX.

Проблема в том, что он обновляет содержимое из файла XML при обновлении для каждого браузера, кроме IE.

Я пытался решить эту проблему с помощью метатегов

<meta http-equiv="expires" content="-1"/>
<meta http-equiv="cache-control" content="no-cache,must-revalidate" />
<meta http-equiv="pragma" content="no-cache"/>

Это небольшая часть соответствующего javascript

$(document).ready(function(){ 
$.ajax({type: "GET",url: "file1.xml",dataType: "xml", success: parseXml });
}

function parseXml(xml){
document.getElementById(eventMonthName).innerHTML=firstxmlvari.getElementsByTagName('month')[0].childNodes[0].nodeValue;
}

Любые предложения будут очень признательны!

Ответы [ 4 ]

4 голосов
/ 07 ноября 2012

Вы также можете использовать опцию «cache: false», которая будет работать так же, как упоминал Акос Лукач. Результат тот же, но вам не нужно создавать свою собственную дату.

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "/echo/xml/",
        cache: false,
        dataType: "xml",
        success: parseXml
    });
});
3 голосов
/ 23 августа 2013

Поскольку метод jQuery .load не предлагает удобного способа отключения кэша, я добавляю параметр метки времени в свой запрос, который просто игнорируется на уровне контроллера:

$('#userDialog').load('/Users/Edit/' + someValue + '?timestamp=' + new Date().getTime(), function () {
...
});

или:

$('#userDialog').load('/Users/Create', { timestamp: new Date().getTime() }, function () {
...
});

Это действительно нужно только для IE и все еще для версии 10.

3 голосов
/ 24 декабря 2011

Да, возможно, вы сталкиваетесь с агрессивным кэшированием в IE ... Попробуйте установить заголовки HTTP, но что-то, что мне подходит, добавляет текущее время к строке запроса, например:пример JSFIDDLE: http://jsfiddle.net/WVBDc/, проверка исходящих HTTP-запросов.

0 голосов
/ 16 января 2012

Спасибо, у меня была похожая проблема (конечно, только в IE) с выпадающим списком, который не обновлялся после запроса. Добавление метки времени сделало трюк в сочетании с;

$(document).trigger("ready");

в функции успеха, ура!

...