无法找到错误的AJAX函数提交表格

问题描述:

我有这个功能在只有IE8alert不会触发和ajax部分根本不运行。然后提交表格,尽管return false。这是为什么发生?为什么只发生在IE8中?无法找到错误的AJAX函数提交表格

$(document).ready(function(){ 
    $('form[name="DownloadForm"]').submit(function(){ 
     var valCases = new Array() 
     valCases.push(($('input[name="firstname"]').val()!="") ? true : false) 
     valCases.push(($('input[name="lastname"]').val()!="") ? true : false) 
     valCases.push(($('input[name="company"]').val()!="") ? true : false) 
     valCases.push(($('input[name="email"]').val()!="") ? true : false) 

     alert(valCases.indexOf(false)) //this alert doesn't fire! 


     if (valCases.indexOf(false)==-1) { 
      $.ajax({ 
       url: url, 
       type: 'POST', 
       data: $(this).serialize(), 
       beforeSend: function(){ 
        //before 
       }, 
       success: function(data) { 
        //do something 
       }, 
       error: function(data) { 
        //error 
       } 
      }); 
      return false; 
     } else { 
      $('.inl-table tr').each(function(index){ 
       if (index==valCases.indexOf(false)) { 
        $(this).next().children('th').css('color','red'); 
       } 
      }); 
      return false; 
     } 
     return false; 
    }); 

}); 
+0

HTML请...也许你错过了一个提交按钮。我有这个问题,一旦浏览器忽略了一个jquery .submit(),因为我的HTML – ggzone 2013-04-04 13:37:58

+0

中缺少一个在表单中有一个类型为submit的按钮。 – greener 2013-04-04 13:38:49

+0

你为什么不用分号来终止这一行?这可能是错误的原因,而不是在IE中读取。 IE浏览器是阅读JS的最差的浏览器。所以添加分号然后尝试。 – 2013-04-04 13:39:39

的问题可能是,这个阵列功能不存在IE8:

valCases.indexOf(false) 

这不会解释失踪的警告当然:)
编辑的,好的,我读错了你的代码。它解释了失踪警报;)

你会发现这个链接下填充工具: MDN - Array indexOf

既然你已经使用jQuery,你可能会藏汉使用jQuery.inArray其回落到一个本地indexOf功能时可用。

+0

这将解释缺少的警报。如果尝试执行'valCases.indexOf(false)'时会引发错误,那么警报不会显示。 – 2013-04-04 13:41:01

+0

这是错误。使用polyfill为IE8提供indexOf函数修复它。 – 2013-04-04 13:41:44

+0

[MDN页面](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf)提供了有关为不支持它的浏览器提供此功能的信息。不确定您是否想将其作为答案的一部分。 – 2013-04-04 13:43:38

使用了AJAX功能吧:

var dd =$(this).serialize(); 

在阿贾克斯

data :dd,