2013-06-25 9 views
7

HINWEIS Blockierung: In Bezug auf diese Website http://www.redbullracingshop.com.au/Angular js 204 Antwort in IE10

Ich habe eine .net WebAPI am vorderen Ende zusammen mit Winkeln $ .http Interaktion ausgeführt wird. Ein Client erwähnte kürzlich, dass das dynamische Feature der Site im IE nicht mehr funktioniert.

Nach dem Ausführen des Codes in ein paar Browsern und beobachten Sie die Anforderungen. Ich habe das in IE bemerkt. Die Post-Anfrage wurde für etwa 2 Minuten unterbrochen oder "pending", bevor ein Ergebnis an den Client zurückgegeben wurde. Ich habe den Code mit einem Unterbrechungspunkt auf dem Server und dem Javascript durchgelaufen, um zu finden, wo die Sperre stattgefunden hat, und festgestellt, dass die Anforderung ordnungsgemäß ausgeführt wird und der Servercode wie erwartet ausgeführt wird. Nichts bleibt hier stehen.

SERVER Snippet

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

ich eine Leere Antwort zurückkehre, oder 204. Dies ist, was ich erwarte, und tun dies nicht als ein Fehler sein. Irgendwo zwischen dem Server, der antwortet, und dem Client, der die Antwort empfängt, gibt es einen 2-Minuten-Stand?

Ist das vielleicht ein Winkelfehler?

CLIENT Snippet

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)); 
     }); 
} 

ich untersucht und festgestellt, dass dies nur in IE10 geschieht und nicht aktuelle Version der Vorgängerversion auf die emulierte Version von der Konsole dev gegenüber.

Ich bin bewusst, dass IE einige interessante Sachen mit 204 Antworten macht, und dies könnte sich in IE10 geändert haben. Se hier https://github.com/angular/angular.js/issues/357?source=cc

Die Netzwerk-Inspektor Ergebnisse sind wie folgt:

/api/CartApi/AddToCart | POST | 204 | 295 B | 384,76 s | XMLHttpRequest

Irgendwelche Ideen? Wenn alles andere fehlschlägt, muss ich versuchen, alle diese leeren WebAPI-Antworten in leere Strings umzuwandeln.

+1

Welche Version von eckigen verwenden Sie? – Scottux

+0

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

+2

Sie haben die Anweisungen in dieser [Anleitung] (http://docs.angularjs.org/guide/ie) befolgt) – callmekatootie

Antwort

2

Für jetzt ist die beste Lösung, die ich habe, eine Arbeit um. Verwenden Sie keine void-Antwort, die zu 204 führt, sondern geben Sie eine manuelle HttpStatusCode.OK (200) -Antwort zurück.

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

Ich bin immer noch neugierig auf eine Erklärung für diesen Fehler.