JQuery ajax () вызов не удается в IE8 - PullRequest
1 голос
/ 25 сентября 2010

У меня есть следующий код для отправки данных с использованием ajax из форм класса ajax.это отлично работает в Firefox, Safari и Chrome, но не работает в IE.

ajax: function() {
      $('form.ajax').live('submit', function() {
        var form_ajax = $(this);

        $.ajax({
          url: form_ajax.attr('action'),
          data: form_ajax.serialize(),
          type: form_ajax.attr('method'),
          dataType: 'script',
          beforeSend: function(xhr) {

            $('#ajax-bid-new .ajax-form-error, #ajax-bid-new .ajax-form-success').remove();
            form_ajax.slideUp();

          }
        });

        return false;
      });

Пожалуйста, помогите - я застрял здесь в течение последних 2 дней.Я возвращаю файл Javascript с сервера для оценки в браузере.Это работает, как и ожидалось, в Firefox, Chrome и Safari, но IE получает его как файл и открывает диалог загрузки файла .

Что я могу сделать в IE, чтобы это работало?Я попытался сбросить следующий код в мой application.js файл (кстати, я делаю проект rails)

// public/javascripts/application.js
jQuery.ajaxSetup({ 
  'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
})

Я получаю то же поведение от IE даже после записи блока ajaxSetup, как описано выше.

Ответы [ 3 ]

0 голосов
/ 25 сентября 2010

Чтобы поймать живую форму, отправьте события в IE, вместо:

$("form").live("submit", function() { ... });

до

var submitHandler = function() { ... };
$("body").children().each(function() {
      $("form", this).live("submit", submitHandler);
})

Точка, которую нужно отметить

  • IE кеширует AJAX-запросы действительно агрессивно (во всяком случае, больше, чем Firefox).Вам необходимо соответствующим образом установить заголовки Cache-Control в ответе, если это не подходит для вашего сайта.

  • измените тип своего контента, в прошлый раз я исправил подобную проблему, изменив тип контентаиз приложения / JSON;charset = utf8 для простого приложения / json

  • jQueries 'bind и live поведения вместе с плагином liveQuery

0 голосов
/ 25 сентября 2010

Плагин LiveQuery решил проблему http://github.com/brandonaaron/livequery

0 голосов
/ 25 сентября 2010

Похоже, live не работает с submit в IE.Вы пробовали использовать вместо этого обычную отправку:

$('form.ajax').submit(function() {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...