jQuery.ajax succès fonction de rappel n'est pas exécuté
J'ai un JavaScript appel Ajax (jQuery.ajax), qui n'effectue pas le succès fonction de rappel.
$.ajax({
url: target,
contentType: 'application/json; charset=utf-8',
type: 'POST',
//type: 'GET',
dataType: 'jsonp',
error: function (xhr, status) {
alert(status);
},
success: function (result) {
alert("Callback done!");
//grid.dataBind(result.results);
//grid.dataBind(result);
}
});
Je vois dans firebug, que la requête est affiché et que le résultat correct en termes de json est renvoyé comme prévu. Quel est le problème?
- Un problème, j'ai vu que peut provoquer ce scénario sont si la page hébergée et l'ajax cible sont dans des domaines différents.
- stackoverflow.com/questions/21368375/... cela fonctionne, essayez cela a fonctionné pour moi
Vous devez vous connecter pour publier un commentaire.
Pour plusieurs fois, j'ai rencontré des problèmes similaires, et la plupart du temps, la raison en était un mal formé json. Essayez d'obtenir le résultat en tant que type de données texte pour voir si c'est votre problème.
Aussi, j'aimerais vous demander si vous êtes en utilisant un paramètre comme "&jsoncallback=?" dans votre url, depuis votre type de données est jsonp au lieu d'une simple json.
Votre
$.ajax
appel avecdataType: 'jsonp'
pourrait travailler dans ces scénarios:Si vous êtes en dehors de ces deux cas, vous ne pouvez rien faire puisque vous ne pouvez pas faire de cross site appels XmlHttpRequest.
C'est une vieille question, mais je soupçonne les gens encore frappé cette.
Je me suis battu pendant un certain temps, et a finalement renoncé et a déménagé à la différés modèle. (J'ai été en utilisant jQuery assez longtemps que j'étais dans "l'ancien" chemin des habitudes encore...) dès Que j'ai déménagé à un différé de modèle, les choses ont commencé à travailler. Je n'ai aucune idée de la raison à l'ancienne n'a pas fonctionné, mais ce n'est plus de soins. (Cette question date d'avant le nouveau modèle.)
cf. https://stackoverflow.com/a/14754681/199172
Vous avez besoin de fixer des async valeur false à la propriété.
Ce qui s'est passé à l'un de mes collègues, alors je me dis que je voudrais ajouter ma solution.
Nous avons pu voir l'appel ajax en cours, et pourrait voir la réponse de revenir dans un violon (200 /complètement JSON valide), mais il n'aurait jamais frappé l'erreur, de la réussite ou de compléter les rappels. L'ajout d'async: false à l'appel ajax serait de le faire fonctionner, mais ce n'était pas vraiment une bonne solution. En outre de placer une alerte directement après l'appel ajax (sans les async: false), et d'attendre quelques secondes une fois que l'alerte a été démontré, serait en quelque sorte la force de l'ajax rappels au travail . Très étrange en effet...
S'avère, la fonction avec l'appel ajax a été lié à un input de type="submit", qui était la source de ce comportement étrange. Changer la source d'entrée de type="button" corrigé.
Ajax de Jquery appel à un servlet avec plusieurs paramètres ne demande pas d'erreur ou de réussite, même si l'appel a été un vrai succès. Il a été lié à un bouton de soumission. Modification qu'il a renvoyé un succès de l'événement.
Voici mon code de référence au cas où quelqu'un en a besoin pour référence.
HTML avec Bootstrap3 (Bouton de référence)
Servlet Référence