2013-09-27 151 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

然後我不知道,對不起:) –