Comment gérer net :: ERR_CONNECTION_REFUSED dans jquery ajax
J'ai ce genre de javascript:
$.ajax({
url: "//myapi.com/json",
dataType: "jsonp"
}).done(function (data) {
selectText('Id', data.country);
}).fail(function (jqXHR, textStatus, errorThrown) {
var defaultOption = 'US'
selectDropdownByText('Id', defaultOption);
console.log(errorThrown);
});
Mais le truc c'est que sur demande https mon ajax ne fonctionne pas parce que le service que j'ai fais appel n'est pas accessible via https et j'obtiens l'erreur :ERR_CONNECTION_REFUSED
- donc, c'est très bien, j'ai juste envie de gérer cela. J'ai .fail
en appel ajax, mais il n'est pas de la manipulation :ERR_CONNECTION_REFUSED
Pourriez-vous donner des conseils sur la façon de gérer :ERR_CONNECTION_REFUSED
dans ce cas?
J'ai aussi été d'essayer d'envelopper mon appel ajax de try-catch
bloc, mais il ne fonctionnait pas non plus.
source d'informationauteur user2926340
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
timeout
propriété de$.ajax
le feu à laerror
de rappel.Cela permettra de s'assurer que le
error
de rappel est déclenché si le serveur ne répond pas dans un délai donné.Ce qui va déclencher l'
fail
rappel lorsqu'il n'y a pas d'internet en tant que bien.Il semble que lorsque jqXHR.readyState (c'est à dire, la readyState domaine de la premier paramètre à l' $.ajax(...).fail () (méthode) est 0, une erreur réseau s'est produite. Cependant, je n'ai pas été en mesure de vérifier l'exacte erreur réseau se fait via JavaScript.
J'ai regardé l'Ajax de jQuery code, et xhr.send() (c'est à dire, XMLHttpRequest.send()) méthode (qui génère l'erreur réseau) ne pas attraper ni jeter l'erreur. Ainsi, il n'est pas possible de l'attraper.
Il semble que le navigateur détecte et affiche le message d'erreur correct mais que jQuery est inconscient sur le type de réseau d'erreur qui se produit.
Donc,
fail
est appelé si nous obtenons unERR_CONNECTION_REFUSED
mais il n'y a aucun moyen de voir pourquoifail
est appelé. Est-il un moyen pour détecter l'intérieur de l'échec de la méthode de pourquoi les choses ont-elles échoué? c'est à dire timeout vs connexion refusée? Il y a une différence entre les deux. J'étais possible de relance, l'autre ne fait pas de différence.Vous n'avez pas besoin de définir un timeout de la poignée de connexion refusée échecs.