jQuery $ .get даже не запускает запрос в Internet Explorer, и я хотел бы знать, почему - PullRequest
1 голос
/ 20 декабря 2011

Это не проблема кеширования, , и код отлично работает во всех других браузерах.

У меня есть простой запрос $ .get, запускаемый нажатием кнопки.Открыв Fiddler для наблюдения за HTTP-трафиком Internet Explorer 9, я могу нажать кнопку и увидеть нулевой HTTP-трафик к www.mydatasource.com на моем компьютере.Я никогда не видел.

Есть идеи, почему я не вижу, чтобы запрос вышел?Спасибо!

$('#mybutton').click(function () {
    $.get('http://www.mydatasource.com/', function(data){});
}

-------- ОБНОВЛЕНИЕ -------------

Также попробовал более простой подход (который не 'в Internet Explorer 9 не работает):

$('#mybutton').click(function () {
    var data = httpGet('http://www.mydatasource.com/');
}

function httpGet(theUrl)
{
   var xmlHttp = null;
   xmlHttp = new XMLHttpRequest();
   xmlHttp.open( "GET", theUrl, false );
   xmlHttp.send( null );
   return xmlHttp.responseText;
}

В этом случае вы могли бы подумать, что увидите запрос Fiddler, но опять полная тишина. Я подумал, что это может быть междоменная проблема , но все (веб-страница, скрипт, URL-адрес "get") размещены в одном домене, и я по-прежнему не получаю трафик из Internet Explorer 8. Любые предложения приветствуются.

Ответы [ 3 ]

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

это связано с тем, что Internet Explorer кэширует запрос и поэтому запрос запускается только в первый раз.

вы можете использовать ajaxSetup () , чтобы избежать этого

jQuery.ajaxSetup({cache: false});

$('#mybutton').click(function () {
    $.get('http://www.mydatasource.com/', function(data){});
});

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

Вы могли бы также сделать

var noCache = new Date().getTime();
$.get('http://www.mydatasource.com/',{nocache: noCache},  function(data){});
0 голосов
/ 20 декабря 2011

Возможно, я ошибаюсь, но вы уверены, что заключили код в функцию .ready?

jQuery(document).ready(function($){

})
0 голосов
/ 20 декабря 2011

Это потому, что IE кеширует запросы. Добавьте текущую дату в конце вашего URL. В этом случае каждый запрос будет на уникальный URL:

$('#mybutton').click(function () {
    $.get('http://www.mydatasource.com/?' + new Date().getTime(), function(data){});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...