/ / Le code ne s'exécute pas après la fin de l'appel AJAX - javascript, jquery, ajax

Code ne fonctionnant pas après la fin d'un appel AJAX - javascript, jquery, ajax

Le premier écouteur d'événement fonctionne bien. Lorsque le deuxième écouteur d'événement s'exécute, je peux voir le POST dans Firebug et le retour, mais le alert("test") n'arrive jamais.

$(".walkthrough").click(function(){
var url = $(this).data("story");
var num = $(this).data("revert");
$("#tableauViz").replaceWith("<div id="tableauViz"></div>")
$.post("",{method: "getTicket", url: url},function(data){
switchToStory(url,data);
$("#help").html("<p>You are currently viewing the walkthrough, click here to <a href="#" data-num=""+num+"" class="exitWalkthrough">go back</a>.</p>");
});
});
$("#addViz").click(function(){
var url = $("#Viz-URL").val();
var name = $("#Viz-Name").val();
var expression = /[-a-zA-Z0-9@:%_+.~#?&//=]{2,256}.[a-z]{2,4}b(/[-a-zA-Z0-9@:%_+.~#?&//=]*)?/gi;
var regex = new RegExp(expression);
if(url.match(regex) && name != ""){
url = url.replace("http://","").replace("https://","");
console.log(url);
$.post("",{
user_key:"5",
method: "addViz",
url:url,
name:name
},function(data){
alert("test");
},"json");
} else {
alert("Please enter a valid URL and Name");
}
});

Quelqu'un y voit-il quelque chose qui empêcherait cela? Comment puis-je déboguer davantage ce problème?

Réponses:

0 pour la réponse № 1

Lorsque vous effectuez des requêtes ajax, c'est toujours un bonidée de fournir un rappel d'erreur même si vous ne pensez pas qu'il sera jamais appelé. Sans un, vous n'avez aucun moyen de diagnostiquer un problème qui n'est pas lié au réseau.

Toutes les méthodes jQuery ajax (autres que .load) renvoient un objet de promesse jQuery qui a terminé, échoué et toujours des méthodes. Utilisez la méthode fail pour détecter les échecs.

$.post(url, data, successHandler).fail(function (xhr, status, reason) {
console.log(
xhr, // this is an object, it will contain the response text, headers, etc
status, // the http status of the response, 20x or 30x for success
reason // this is the reason that the response failed
);
});

Dans votre cas, cela a échoué car une chaîne vide n'est pas json valide.


-2 pour la réponse № 2

Vous devez supprimer le premier argument vide "" de votre .post, sinon l'url sera écrasée par une chaîne vide .:

$.post({
user_key:"5",
method: "addViz",
url:url,
name:name
},function(data){
alert("test");
},"json");