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); 
      } 
     }); 
    }); 

:

는 Heres는 아약스 코드를 제출합니다. 이 코드 결과 처리 그러나 :

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 및 사파리 올바르게의 에러 표시 "else"조건.

IE는 반환 값 (1 = 성공, 문자열 = 오류)에 관계없이 항상 "if"조건을 표시합니다.

나는 천재가 있다고 가정하고 즉시 문제를 보게 될 것입니까?

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 사파리에서 예상대로 작동하지만 IE는 "성공"

답변

1
로 모두 문자열 (오류) 및 정수 (성공) 평가

isNan이 작동해야합니다.

+0

감사합니다 사파리와 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

개발자 도구 (도구 -> 개발자 도구)를 사용하여 IE에서 isNaN ("abc") 및 isNaN ("123")을 사용하고 예상 결과를 얻었습니다. (각각 true 및 false) –

+0

도움을 주셔서 감사합니다. 나는 상류에있는 오류를 발견했다. 왜 문자열 대 정수 평가에 영향을 미칠지 모르겠지만 업스트림 변경으로 인해이 문제가 해결되었습니다. 감사합니다. – pdxtim

1

어떻게 노력에 대한 (때는 isNaN (에서는 parseFloat (HTML))

편집 :.!. 시도하셨습니까에 대한 대안으로

가 왜 선명도에 도움 "성공"을 반환하지 않는

+0

도움 주셔서 감사합니다! – pdxtim

관련 문제