Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/03/2011, 20h16   #1
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 853
Points : 1 352
Points : 1 352
Par défaut jquery ajax crossdomain -> error handling -> delete script

bonjour à tous,

(hey oui, même moi je peux avoir besoin d'aide ! )


je développe un site en local sur mon pc qui exécute de temps à autre des appels sur ma base de données en ligne qui renvoit des scripts au format JS. comme cela est considéré comme du cross-domain, j'utilise la fonction "ajax" de jquery qui n'effectue pas un appel "ajax" au sens traditionnel du terme mais qui crée simplement un object <script> en l'attachant au head html de ma page.


bref, le problème étant que je voudrais gérer les erreurs lors du chargements. il existe bien les options "error" et "succes" dans la fonction "ajax" de jQuery mais avec mes testes, ça ne semble pas fonctionner.(ne voulant pas admettre que j'ai pu faire une erreur, je présume que ces optinos ne sont valables que pour les appels ajax conventionnels : xhr).


j'essaie donc de résoudre mon problème à l'aide de timer(setTimeout) que j'annule en cas de succès avec l'option "complete" (qui correspond, il me semble, au "onload" du script).

du genre :

Code js :
1
2
3
4
5
6
7
8
window.timerBadReponse = setTimeout("alert('réponse erronée')",4000);
var timerNoReponse = setTimeout("alert('réponse trop tardive');clearTimeout(timerBadReponse )",3000);
$.ajax({
  type: "GET",
  url: url,
  dataType: "script",
  complete: function(){clearTimeout(timerNoReponse );}
});

et dans mon fichier js venant de mon serveur, j'annule le cas de "bad réponse" (en cas de page 404 ou d'erreur sql/php par exemple).
Code js :
1
2
clearTimeout(timerBadReponse );
//... reste du code

mon problème étant, je voudrais pouvoir "annuler" le chargement de mon script une fois le délai dépassé (3sec dans mon exemple) .. je me dis qu'en js "normal" je n'aurai qu'a faire un "removeChild" de mon script(à condition qu'il soit bien considéré comme "attaché" au head même si son "onload" n'est pas terminé.). donc je voudrais savoir s'il était possible de récupérer mon "élement" script depuis jQuery ... ou si j'avais plutôt intérêt à tout recoder en JS traditionnel ? ou si vous avez une autre solution à proposer ?


merci d'avance pour vos nombreuses de réponses.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 16h28   #2
Membre Expert
 
Avatar de gwinyam
 
Homme Mathieu ROBIN
Développeur Web
Inscription : mai 2006
Messages : 1 116
Détails du profil
Informations personnelles :
Nom : Homme Mathieu ROBIN
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mai 2006
Messages : 1 116
Points : 2 142
Points : 2 142
T'as regardé du côté de jQuery 1.5 ?

http://www.developpez.net/forums/d10...s-asynchrones/

Avec le nouveau module Ajax, tu vas créer un objet Deferred, Ce qui te permet, en parallèle d'avoir un timer qui lui déclenchera le "fail" de l'appel asynchrone et du coup l'annulation du chargement. Puisqu'une fois que l'objet Deferred dans le statut soit réussi, soit échoué ne peux plus changer d'état et tout retour en force d'un résultat sera bêtement ignoré.

A mon avis, c'est sur cette piste que tu dois travailler.
__________________
Mon blog techno et son billet hebdomadaire sur l'actualité jQuery. Et mon blog cuisine pour une personne.
Le bouton ne masse pas les pieds, mais ça aide la communauté.
gwinyam est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/03/2011, 20h11   #3
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 853
Points : 1 352
Points : 1 352
Citation:
Envoyé par gwinyam Voir le message
T'as regardé du côté de jQuery 1.5 ?

http://www.developpez.net/forums/d10...s-asynchrones/

Avec le nouveau module Ajax, tu vas créer un objet Deferred, Ce qui te permet, en parallèle d'avoir un timer qui lui déclenchera le "fail" de l'appel asynchrone et du coup l'annulation du chargement. Puisqu'une fois que l'objet Deferred dans le statut soit réussi, soit échoué ne peux plus changer d'état et tout retour en force d'un résultat sera bêtement ignoré.

A mon avis, c'est sur cette piste que tu dois travailler.
je ne connaissais pas et à mon avis la réponse est là, je vais regarder. merci.
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h12.


 
 
 
 
Partenaires

Hébergement Web