2011-01-14 4 views
5

У меня проблема с, думаю, что, IE8. Следующий код, упрощены для ясности, не работает на всех:JQuery .get() не работает в Internet Explorer

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.

EDIT: $ .post() также не работает.

+0

Не могли бы вы предоставить полный вызов функции, а не один с пропущенными битами? Ваш текущий код не будет работать в любом браузере. – lonesomeday

+0

Этот точный код работает в каждом браузере, сохраняя IE8. «GetActivityUrl (...)» возвращает действительный URL-адрес. – Alessandro

ответ

0
$J.get(getActivityURL('ActionName' 

// End $.get() 

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

+0

Тогда это забросило бы ошибку в каждом браузере. – rahul

+0

Да, забыл упомянуть, что он правильно «не конфликтует» во всем приложении. В любом случае, я только что отредактировал вопрос. – Alessandro

0

есть у попытался:

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

Просто догадка

EDIT:

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

jQuery issue in Internet Explorer 8

+0

То же, что и раньше, без изменений (я также включил тип: «GET»). Тем не менее он работает в любом другом браузере, но не в effing IE – Alessandro

+0

работает ли он в ie6 и 7? или не во всех IE? –

+0

эй чувак, я редактирую сообщение, проверяю ссылку, которую я добавил! –

1

Я не уверен, что это проблема, но попробуйте удалять ";" в {кэше: ложному}

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

+0

Спасибо, тоже пробовал, но не повезло. – Alessandro

1

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

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

+0

Это работало для меня в IE9. –

13

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

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

$.ajaxSetup({ 
    cache: false 
}); 

Или Если вы хотите, чтобы устранить кэшированный результат в определенном АЯКС вызова Добавьте уникальный номер в конце URL. Вы можете использовать метод $.now(), чтобы получить уникальный номер

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

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

+3

Это спасло мою жизнь, спасибо! –

+2

Это !!! благодаря!! –

Смежные вопросы