Jquery AJAX не работает на IE 7/8 - PullRequest
6 голосов
/ 29 ноября 2009

Я пытаюсь отладить причину, по которой мой ajax get / post не работает в IE 7/8

Вот мой код:

$.ajax({type: "POST", dataType:'html',url: "/places/set_member/add/",data: "place_id="+place_id ,
                       beforeSend:  function() {$("<span class='notice'>Saving...</span>").prependTo('body');},
                       success: function(){
                        $.ajax({type:"GET",url:url,success:function(html){$('div.place-list .ui-tabs-panel').html(html);},complete:function(){resetAddThis();}})
                       },
               complete: function() {
                            $('span.notice').fadeOut(500);
                $('span.notice').remove();
                            }});

Теперь это прекрасно работает в FF Safari Win / Mac, но не в IE 7/8

Я скачал fiddler и наблюдал за звонками, скрипт должен отправлять данные на сервер, а затем повторно загружать HTML-код, который теперь содержит новую обновленную информацию. Происходит то, что первый вызов получает ошибку 500, но затем, после того, как html-файл перезагружается, и то же самое действие повторяется, он отправляет с 200 мс, поэтому создается впечатление, что он не сохраняется, что он делает со второй попытки.

Есть ли что-то, что я делаю неправильно, или что-то, что мне нужно добавить? Это цикл php, поэтому эта функция применяется к той же ссылке на 20-30 элементах на странице.

Ответы [ 6 ]

13 голосов
/ 29 ноября 2009

IE кэширует все вызовы ajax, которые не относятся к типу POST. Я обнаружил, что лучше всего делать все вызовы Ajax POST, чтобы IE не делал этого, даже если вы публикуете пустые данные.

Или вы можете сделать, как @redsqaure предлагает ниже, и сделать это:

.

$ ajaxSetup ({кэш ложь})

4 голосов
/ 04 октября 2012

Если вам не нужен тип данных для HTML, попробуйте это.

$.ajax({        
  url: 'Enter URL'
  dataType: 'jsonp',
  type: 'get',
  success: function (data) { }
});
2 голосов
/ 29 ноября 2009

IE кэширует вызовы ajax. убедитесь, что вы включили в свой звонок случайное число или случайную строку, например &rand=[some randomly generated something], и повторите попытку.

0 голосов
/ 28 августа 2013

У меня была такая же проблема с jquery 2.0.2. Я изменил jquery на 1.8.1, и Ajax отлично работал в IE.

0 голосов
/ 06 августа 2012

В большинстве браузеров вы можете указать:

url: ''

... для вызова jQuery ajax, и это отправит самому себе.

В IE вы должны указать URL.

url: '/relative/path/to/script'
0 голосов
/ 06 августа 2011

Наконец-то! Я решил свою проблему из-за "той же политики происхождения" и просто поднял в IE !: Я только что изменил параметр URL с: 'http://mysite.com/api/' на ' / api / ' и это работает !!!

надеюсь, что это поможет некоторым из вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...