Jquery .get () не работает в Internet Explorer - PullRequest
4 голосов
/ 14 января 2011

У меня проблема с, знаете что, IE8.Следующий код, упрощенный для ясности, совсем не работает:

alert('before get');

$.get(getActivityURL('ActionName',{
    ts: new Date().getTime(), ...other params...}), 
{cache:false;},
    function (xml) {
    alert("in get callback");
},'xml'); // End $.get()

alert('in after get');

getActivityUrl () выводит действительный URL с параметрами запроса.

Это работает правильно в FF и ChromeОднако в IE8 это даже не входит в обратный вызов $ .get ().Я получаю оповещения «до» и «после», но не оповещение «in», и действительно, ничего не происходит, и запрос НЕ отправляется.Я действительно не знаю, что здесь думать.

Заголовки ответа: "Content-Type: application / xml; charset: iso-8859-1", что подтверждено в FF.: $ .post () тоже не работает.

Ответы [ 5 ]

12 голосов
/ 26 мая 2013

IE печально известен кешированием.Поэтому вам нужно убедиться, что вы не получаете кэшированный результат.

Вы можете отключить кэширование глобально, задав для свойства кэша значение false в методе ajaxStart.

$.ajaxSetup({
    cache: false
});

Или Если вы хотите исключить кэшированный результат в конкретном вызове AJAX, добавьте уникальный номер в конец URL-адреса.Вы можете использовать метод $.now() для получения уникального числа.

$.get("someurl.php?" + $.now() ,function(result) {
   // do something with result
});

$.now(). Метод возвращает число, представляющее текущее время.

1 голос
/ 01 апреля 2012

Я думаю, что в IE есть проблема с кэшем.

Так что добавьте Math.random(), еще один параметр в конце, такой как "&mathRandom="+Math.random(); Поскольку IE будет распознавать тот же запрос, что и предыдущий, он будет передавать данные изкеш вместо запроса на запуск.

1 голос
/ 14 января 2011

Я не уверен, если это проблема, но попробуйте удалить ";" в {cache: false}

IE не нравится никаких дополнительных вещей в {}, например {a: a, b: b, c: c,} будет работать в FF, но не в IE

0 голосов
/ 14 января 2011

вы пробовали:

$.ajax({
  url: getActivityURL('ActionName',{ts: new Date().getTime(), ...other params...}),
  data: data,
  success: function (xml) {
               alert("in get callback");
            },
  dataType: 'xml'
});

Просто предположение

EDIT:

Я нашел интересную ветку, которая может вам помочь, проверьте это:

jQuery проблема в Internet Explorer 8

0 голосов
/ 14 января 2011
$J.get(getActivityURL('ActionName'

// End $.get()

Это правильно? Я имею в виду $ J ... Вы используете более одного JS-фреймворка или что-то в этом роде?

...