2010-09-25 3 views
1

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

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 файле (я делаю проект рельсов кстати)

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

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

ответ

0

Похоже, livedoesn't work with submit в IE. Вы пытались использовать нормальный представить вместо:

$('form.ajax').submit(function() { 
+0

представить не работает .. Я новичок в яваскрипт и яваскрипт и я ugess запрос является отправлен асинхронно корректно с моим кодом выше - только когда IE получает js - вместо оценки js, это рендеринг – Anand

0

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

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

в

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

Следует также отметить

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

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

  • jQueries' bind and live behaviours along with the liveQuery plugin

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