2009-08-16 91 views
1

我有一个JQuery/Ajax更新。它在所有主流浏览器中正确更新,但是,处理错误响应在任何版本的IE中都不起作用。Jquery/AJAX响应 - 在FF/Safari中工作,但不是IE parseFloat(html)问题?

继承人的AJAX提交代码:

$('.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正确显示在错误“其他”条件。

无论返回值如何(1 =成功,字符串=错误),IE始终显示“if”条件。

我假设一些天才会立即看到问题吗?

编辑------- 这里有一些信息。我在脚本中添加了一个控制台日志来输出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建议(见下文)。适用于safari和FF工作正常。不能在IE8中工作。还没有尝试过6或7。 IE显示“record saved”,无论是否成功 if(isNaN(html)){('#ajax_errors'+ Id).html(html).show('slow'); \t \t \t \t \t \t}其他{ \t \t $( '#ajax_message' +编号)的.html( '记录保存。')显示( '正常')。 \t $('#ajax_message'+ Id).hide('slow'); \t \t} – pdxtim 2009-08-16 21:48:30

+0

我刚刚在IE浏览器中用开发工具(工具 - >开发工具)尝试过isNaN(“abc”)和isNaN(“123”),我得到了预期的结果(分别为true和false) – 2009-08-16 22:10:30

+0

感谢您的帮助。我在上游发现了一个错误。我不明白为什么它会影响字符串与整数的评估,但是上游的改变让这个消失。谢谢 – pdxtim 2009-08-17 01:52:55

1

如何努力(isNan(parseFloat(HTML))

编辑:。

或者你为什么不回 “成功”,在清晰度,以帮助

+0

感谢您的帮助! – pdxtim 2009-08-17 01:53:28

相关问题