2009-08-16 2 views
1

У меня есть обновление JQuery/Ajax. Он корректно обновляется во всех основных браузерах, однако обработка ответов об ошибках не работает ни в одной версии IE.Ответ JQuery/AJAX - работает в FF/Safari, но не в IE parseFloat (html) проблема?

Херес Аякса отправить код:

$('.ajax_multi_submit').click(function (event) { 
     // if javascript is enabled, stop default post 
     event.preventDefault(); 

     // get the id assigned to this form. This id will 
     // be added to every id to used in processing 
     var element = $(this); 
     var Id = element.attr("id"); 
     var formUrl = $('#ajax_multi_form' + Id).attr('action'); 

     $.ajax({ 
      url: formUrl, 
      type: "POST", 
      dataType: "html", 
      data: $('#ajax_multi_form' + Id).serialize(), 
      beforeSend: function() { 
       showAjaxMultiBusy(Id); 
      }, 
      complete: function() {}, 
      success: function (html) { 
       processAjaxMultiForm(html, Id); 
      } 
     }); 
    }); 

Опять же, я не думаю, что проблема здесь, как и все браузеры правильно размещать обновления. Тем не менее, при обработке результата с этим кодом:

function processAjaxMultiForm(html, Id) { 
     $('#ajax_errors' + Id).hide('slow'); 
     window.setTimeout(function() { 
      $('#ajax_busy' + Id).hide('slow'); 
      if (parseFloat(html)) { 
       $('#ajax_message' + Id).html('Record Saved.').show('normal'); 
       $('#ajax_message' + Id).hide('slow'); 
      } else { 
       $('#ajax_errors' + Id).html(html).show('slow'); 
      } 
     }, 1500); 
    } 

Когда строка ошибки возвращается вместо целого числа (parseFloat (HTML) = «некоторая строка ...»), FF и Safari правильно отображать ошибку в условие «else».

IE всегда будет отображать условие «если», независимо от возвращаемого значения (1 = успех, строка = ошибка).

Я предполагаю, что какой-то гений там сразу увидит проблему?

EDIT ------- Вот немного больше информации. Я добавил консольный журнал сценарию для вывода переменной html. Я получаю правильную строку на ошибках и «1» на успех. Я обновил код за предложением ниже:

function processAjaxMultiForm(html, Id) { 
    $('#ajax_errors' + Id).hide('slow'); 
    window.setTimeout(function() { 
     $('#ajax_busy' + Id).hide('slow'); 
     console.log("html is: " + html); 
     if (isNaN(html)) { 
      $('#ajax_errors' + Id).html(html).show('slow'); 
     } else { 
      $('#ajax_message' + Id).html('Record Saved.').show('normal'); 
      $('#ajax_message' + Id).hide('slow'); 
     } 
    }, 1500); 
} 

Как и прежде, работает, как ожидалось в FF Safari, но IE оценивает как строку (ошибки) и целое (успех) как «успех»

ответ

1

isNan должен работать.

+0

Спасибо за попробовать Ждут! Я поменялся в isNAN, как и предлагалось (см. ниже). Хорошо работает для сафари и FF. Не работает в IE8. Не пробовал еще 6 или 7. IE показывает «сохраненную запись» независимо от того, успех или нет. if (isNaN (html)) { $ ('# ajax_errors' + Id) .html (html) .show ('slow'); \t \t \t \t \t \t} еще { \t \t $ ('# ajax_message' + Id) .html ('Запись сохранена.') Шоу ('нормальный'). \t $ ('# ajax_message' + Id) .hide ('slow'); \t \t} – pdxtim

+0

Я просто попробовал isNaN («abc») и isNaN («123») в IE с инструментами разработчика (Инструменты -> Инструменты разработчика), и я получил ожидаемые результаты (true и false соответственно). –

+0

Спасибо за вашу помощь. Я обнаружил ошибку вверх по течению. Я не понимаю, почему это повлияло бы на оценку целых чисел и целых чисел, но изменение вверх по течению привело к тому, что это исчезло. THANK YOU – pdxtim

1

Как о попытке (IsNaN (parseFloat (HTML))

EDIT:..

Кроме того, почему бы вам не вернуться "Успех", чтобы помочь в ясности

+0

Спасибо за помощь! – pdxtim

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

  • Нет связанных вопросов^_^