Délai d'attente ne fonctionne pas en ajax requête post
Je ne suis pas en mesure de faire de l'ajax d'erreur fonction de rappel après 3 secondes. J'ai essayé avec le délai d'attente, mais il ne sera pas passer à d'erreur de rappel après un certain temps! Je ne suis pas en mesure d'obtenir l'alerte Got timeout
.
Lorsque j'ai évoqué des questions similaires dans ce site avec des problèmes similaires, il n'a pas aidé. Ils ont tous l'utilisation d'ajax de type GET. Je suis à l'aide de jquery 1.10.1 de la bibliothèque.
script :
$.ajax({
type: 'POST',
timeout: 3000,
url : "http://mydomain/Services.asmx/Best_Scores",
dataType: "text",
async:false,
crossDomain:true,
data: "strJsonRequest="+scoredata,
success: function (data) {
//Success code ...
},
error: function (data, textStatus, errorThrown) {
if(textStatus == "timeout") {
alert("Got timeout");
}
}
});
Toute solution ?
- Combien de temps la RTT à prendre pour
http://mydomain/Services.asmx/Best_Scores
? Peut-être que l'url n'est tout simplement pas le temps? - Merci pour la réponse, je vais prendre 15 à 20 secondes !
- Avez-vous essayé d'alerter quelque chose dans la fonction d'erreur qui n'est pas dans l'instruction if? Peut-être
textStatus
n'est pas "délai d'attente"?!
Vous devez vous connecter pour publier un commentaire.
Correctif :
Changement
async : false
àasync: true
Raison :
Un appel AJAX synchrone blocs jusqu'à ce que la demande a été fini. La mise en œuvre d'un délai d'attente n'est pas possible pour des raisons techniques, parce que l'appel AJAX devrait être exécuté plus tard.
Si un appel AJAX est exécuté au plus tard, la fonction en quelque sorte de mettre en œuvre une fonctionnalité de blocage, pour arrêter l'exécution de code après l'appel AJAX, et de l'exécuter à nouveau après un délai d'attente - pas possible.
Aujourd'hui, (en 2019) j'ai toujours ce problème.
J'ai un appel ajax trop long (en fonction de la Date de Début-> Date de Fin) script php.
et quelques minutes après, je reçois l'erreur 500, async: true n'aident pas.
L'appel est:
Je l'ai résolu en utilisant:
côté PHP:
au début de script.
dans le milieu de script (par exemple dans la boucle principale de tous les jours). Cela vous aidera à laisser au client de ne pas déconnecter (je pense que c'est le principal problème).
À l'aide de ce que j'continuellement écrire des espaces avant le final json.
Heureusement jquery garniture espaces avant de parser le json et, en fin de compte, le json est valide.
Donc je peut attraper un objet de réponse à savoir si le script est terminé avec des erreurs ou des avertissements.
J'Espère que cela aide quelqu'un.