11540 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,

Je cherche à récupérer quoi qu'il arrive le code réponse HTTP lors d'une requête Ajax.

J'utilise la libraire JavaScript jQuery pour effectuer mes requêtes Ajax.

Jusque là, pas de soucis, avec la méthode "$.ajax()" le paramètre est disponible (StatusCode) et permet d'effectuer son triage.

Par contre, je souhaiterais savoir s'il est possible d'avoir ce même retour avec la méthode "$.load()" ?

Vous allez peut être me répondre, fait la requête avec "$.ajax()", mais le problème est que je me sers de "$.load()" pour vérifier le chargement du contenu d'une iFrame.

Voici un extrait de mon code, qui ne me permet que de faire un triage que lors d'une erreur HTTP :

	iframe.load(function(response, status, xhr)
			{
			if(status == 'error' && xhr.status == '500')
				{
				DeferredIframe.reject();
				}
				else
					{
					DeferredIframe.resolve();
					}
			}
		);


Mais je souhaiterais avoir la possibilité de traiter aussi en "reject()" la réponse HTTP 302 qui n'est pas une erreur.

Si vous avez une idée, merci !

Bien évidement, déjà cherché pas mal sur le net, mais "load" donne beaucoup de résultat, et le "statuscode" donne à coup sur sur "$.ajax()" ... Smiley bawling

P.S: XHR est "undefined" tant que le chargement n'est pas en "error".
P.S²: L'objet DeferredIframe est un "Deferred Object" pour me permettre de gérer bien plus simplement les "callbacks"
Modifié par Super_baloo8 (08 Mar 2013 - 18:52)
Hello !

Apparemment le code de retour 302 est considéré comme une erreur.
J'ai fais fonctionner le code suivant :
if (status == "error" && xhr.status == "302"){
     alert("Erreur 302");
}
Si ça fonctionne (je ne vois pas pourquoi j'aurais un résultat différent), ça serait génial, je teste ça demain, merci beaucoup !
Modifié par Super_baloo8 (12 Mar 2013 - 20:18)
Hello

J'ai refais quelques tests.
Et si je demande à la page que je veux charger de me renvoyer le code 301 (ou 302), je peux l'intercepter via jquery avec le code que j'ai donné au dessus.

Par contre, si dans cette même page je lui indique en plus ou la ressource a été déplacée (ce qui doit normalement être fais pour les codes 302 et 301), je ne peux que détecter le 'success : 200' via Jquery (ou le 404 Smiley biggrin ).