/ / El código no se ejecuta después de que se completa la llamada AJAX: javascript, jquery, ajax

El código no se ejecuta después de completar AJAX Call - javascript, jquery, ajax

El primer detector de eventos funciona bien. Cuando se ejecuta el segundo detector de eventos, puedo ver el POST en Firebug y el retorno, pero el alert("test") Nunca sucede.

$(".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");
}
});

¿Alguien ve algo allí que pueda prevenir esto? ¿Cómo puedo seguir depurando este problema?

Respuestas

0 para la respuesta № 1

Al realizar solicitudes ajax, siempre es una buena ideaidea de proporcionar una devolución de llamada de error incluso si cree que nunca se llamará. Sin una, no tiene forma de diagnosticar un problema que no está relacionado con la red.

Todos los métodos de jQuery ajax (distintos de .load) devuelven un objeto de promesa de jQuery que ha cumplido, ha fallado y siempre ha sido métodos. Utilice el método de error para detectar cualquier error.

$.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
);
});

En su caso, falló porque una cadena vacía no es json válido.


-2 para la respuesta № 2

Debe eliminar el primer argumento vacío "" de su .post, de lo contrario, la URL se sobrescribirá con una cadena vacía:

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