2013-06-25 45 views
7

注意:在參照該網站http://www.redbullracingshop.com.au/角JS 204響應於IE10阻斷

我有一個.net的WebAPI具有角$ .http在前端相互作用沿運行。最近一位客戶提到該網站的動態功能在IE中停止工作。

在幾個瀏覽器中運行代碼並觀察請求後。我注意到在IE中。在將結果返回給客戶之前,Post請求被掛起或「等待」約2分鐘。我在服務器和JavaScript上找到了一些斷點的代碼,找到它的鎖定位置,發現請求觸發正常,服務器代碼按預期執行。這裏沒有任何東西在拖延。

服務器片斷

[AcceptVerbs("POST")] 
public void AddToCart(JObject jsonData){ 
    // DO CODE 
} 

我返回無效響應,或204這是我所期望的,不認爲這是一個錯誤。服務器響應和接收響應的客戶端之間有一個2分鐘的停頓?

這是一個角度錯誤也許?

CLIENT段

this.post = function (url, data, success, fail) { 
    fail = (fail !== undefined) ? fail : success; 
    $http.post(url, data) 
     .success(function (data) { 
      if (data.length == 0) { 
       success(onEmpty(url)); 
      } else { 
       success(data); 
      } 
     }) 
     .error(function (data) {    
      fail(onError(url, data)); 
     }); 
} 

我已經調查,發現這是隻在IE10發生,而不是以前版本的實際版本,而不是從開發者控制檯仿真版本。

我知道IE做一些有趣的事情與204響應,這可能已經改變了IE10。硒這裏https://github.com/angular/angular.js/issues/357?source=cc

網絡檢查結果如下:

/API/CartApi/AddToCart | POST | 204 | 295 B | 384.76 s | XMLHttpRequest

任何想法?如果一切都失敗了,我將不得不嘗試將所有這些無效WebAPI響應轉換爲空字符串。

+1

你使用哪個版本的角? – Scottux

+0

//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js –

+2

您是否遵循了本[指南]中提供的說明(http://docs.angularjs.org/guide/ie ) – callmekatootie

回答

2

現在最好的解決方案是解決問題。不要使用導致204的void響應,而是返回手動HttpStatusCode.OK(200)響應。

[AcceptVerbs("POST")] 
public HttpResponseMessage AddToCart(JObject jsonData){ 
    // DO CODE 
    return request.CreateResponse(HttpStatusCode.OK); 
} 

我仍然對這個bug的解釋感到好奇。