2013-09-27 105 views
1

我已经阅读了许多不同的解决方案,但是我无法得到任何工作。基本上,我使用jQuery form plugin做下面的POST。它完美的工作,并且所有正确alert s火,但它总是重定向到响应。所以,如果我得到一个200 HTML响应它会显示它并删除表单页面。与400一样会显示我IE 7的400错误页面。我错过了什么来防止这种重定向?JQuery AJAX POST到IE 7,处理响应

var $form = $("#myform"); 
    $form.submit(function(e) { 

     e.preventDefault ? e.preventDefault() : e.returnValue = false; 

     $form.ajaxSubmit({ 
      type: $form.attr('method'), 
      url: $form.attr('action'), 

      beforeSend: function(xhr, settings) { 
       alert("sending"); 
      }, 
      success: function(data, status) { 
       alert("success"); 
      }, 
      error: function(data, status) { 
       alert("error"); 
      } 
     }); 

     return false; 

    }); 

UPDATE

我是不是我说的话是正确的。警报不会触发。希望有帮助。警报正在触发,并且在IE 7模式下运行的IE 10中正确运行(包括禁止重定向)。除了在接收400时调用success方法的事实,但它没有重定向。然后,我在虚拟机上测试了原生IE 7,并且没有警报被触发,它确实重定向了。

更新2

不好意思到互联网络......整个剧本没有在IE 7上运行请看下面我的答案。

+0

IE ...七?!你真的需要支持吗?我很抱歉:( –

+0

男人你不知道,我希望我没有。 – guydog28

+0

我觉得你的痛苦,男人。我曾经花了一个星期的大部分时间修复ASP经典网站在IE 7中工作:/ –

回答

1

我使用requirejs加载我的脚本,以及由于某种原因,domReady!模块是保持脚本加载中,因为!的IE 7。所以周围的代码包裹上面是这样的:

define(['domReady!', 'jquery.form'], function() { 
    //code from question 
}); 

我改变了这以下,并开始工作:

define(['domReady', 'jquery.form'], function(ready) { 
    ready(function() { 
     //code from question 
    }); 
}); 

现在我只需要弄清楚为什么它仍然呼吁success当服务器发回一个400错误。

1

尝试将return false;添加到事件挂钩的末尾;某些浏览器不能正确支持preventDefault(),并且期望得到明确的false返回值。

var $form = $("#myform"); 
$form.submit(function(e) { 

    $form.ajaxSubmit({ 
     type: $form.attr('method'), 
     url: $form.attr('action'), 

     beforeSend: function(xhr, settings) { 
      alert("sending"); 
     }, 
     success: function(data, status) { 
      alert("success"); 
     }, 
     error: function(data, status) { 
      alert("error"); 
     } 
    }); 

    e.preventDefault ? e.preventDefault() : e.returnValue = false; 
    return false; 
}); 
+0

对不起,我确实在我的代码中有这个,当我修剪下来的时候忘了把它包括在里面,仍然没有去,我更新了我的问题以包含它 – guydog28

+0

然后我不知道,对不起:) –