2010-11-24 31 views
3

Je crée un XMLHttpRequest en utilisant ExtJS à un service qui ne renvoie aucun responseText, juste un 204 et l'en-tête de réponse TotalNearby. L'appel fonctionne parfaitement avec Firefox, mais avec Internet Explorer 8, les deux boîtes d'alerte sont vides. Qu'est-ce que je fais mal?XMLHttpRequest réponse n'a pas d'en-têtes dans Internet Explorer

Ext.Ajax.request({ 
    url: 'services/getNearby', 
    method: 'GET', 
    params: { 
     'lat': 34, 
     'lon': -90 
    }, 
    headers: { 
     'Authorization': AUTH_TOKEN 
    }, 
    success: function(response) { 
     if (response.status == 204) { 
      alert(response.getAllResponseHeaders()); 
      alert(response.getResponseHeader('Total-Nearby')); 
     } 
    }, 
    failure: function(response) { 
     alert('Server status ' + response.status); 
    } 
}); 

Répondre

5

Selon le site http://www.enhanceie.com/ie/bugs.asp c'est un bug IE 7/8:

IE0013: IE XMLHTTP mise en œuvre tourne 204 code de réponse en bogus 1223 code d'état

Décrite ici http://dev.jquery.com/ticket/1450, l'objet XMLHTTPRequest dans IE renvoyer un code d'état de 1223 et déposer tous en-tête de réponse s si le serveur renvoie une réponse HTTP/204 No Content .

Cela est dû à un artefact de conception interne de URLMON (les rendements de liaison opération abandonnée (1223) si le serveur rendements aucun contenu en réponse à une demande ).

Repros dans IE8, IE7 (et probablement plus tôt). Solution: Traitez "1223" comme équivalent à un 204. Remarque: les en-têtes HTTP restent indisponible dans ce cas.

Si vous voyez des alertes vides, ce qui signifie que IE n'a pas changé le code d'état en 1223, alors cette partie du bogue peut avoir été corrigée. Cependant, je serais plus préoccupé par la déclaration:

Remarque: les en-têtes HTTP restent indisponibles dans ce cas.

comme cela semble être le problème auquel vous faites face. Avez-vous besoin d'utiliser un service qui ne répond pas avec du contenu? Vous pourriez être mieux à même de renvoyer une réponse typique avec un corps de message.

+0

Heureusement, je peux modifier le service. Merci! – originalbryan