Je dois admettre que c'est mon premier article sur ce site, donc je m'excuse si je fais quelque chose de mal (formatage etc).Jquery Ajax appels crash Internet Explorer?
De toute façon, je crée une sorte de mmo en utilisant javascript (et jQuery), et jusqu'à présent tout fonctionne bien dans Chrome, Safari, Firefox, etc. Cependant, j'ai trouvé que quelque part le long de la ligne, Internet Explorateur se bloque.
En reproduisant l'accident, je l'ai réduit à ce code:
function getUpdates(){
var data={uid:playerName,area:1,mid:lastMessage};
$.ajax({
url: "getUpdates.py",
timeout: 32000,
data: data,
type:"GET",
complete: function(obj, textStatus){
//handleUpdates(obj);
getUpdates();
}
});
}
qui est censé interroger des mises à jour sur une longue période. Cependant, dans IE après une réponse, ce code est bloqué dans une boucle infinie, ce qui va planter le navigateur. Il ne semble pas se bloquer après chaque réponse, seulement s'il n'y a pas de réponse du serveur.
Notez la ligne qui dit « complet: ... » a été jugé comme:
success: function(...){getUpdates();...},
error: function(...){getUpdates();...}
avec le même problème se produit.
On dirait que vous avez tout fait droit .. . toutes nos félicitations! Cependant, vous devriez probablement ajouter des balises 'javascript' et/ou' ajax' au lieu de 'long-polling'. – SLaks
Pourquoi ne pas mettre un délai avant d'appeler à nouveau getUpdates(). –
le serveur prend beaucoup de temps pour répondre aux requêtes (c'est pourquoi il y a une limite de 32 secondes) certaines requêtes peuvent prendre jusqu'à 30 secondes avant qu'une réponse ne soit générée. Le jeu est en temps réel, donc l'ajout d'un délai côté client supplémentaire est très visible et ne permet pas d'économiser beaucoup de bande passante. – Sylvan