/ / Code läuft nicht, nachdem AJAX Call beendet wurde - javascript, jquery, ajax

Code wird nicht ausgeführt, nachdem AJAX Call Completes ausgeführt wurde - javascript, jquery, ajax

Der erste Event-Listener funktioniert einwandfrei. Wenn der zweite Ereignis-Listener ausgeführt wird, kann ich den POST in Firebug und die Rückkehr sehen, aber die alert("test") passiert nie.

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

Sieht jemand darin etwas, das das verhindern würde? Wie kann ich dieses Problem weiter debuggen?

Antworten:

0 für die Antwort № 1

Bei Ajax-Anfragen ist es immer gutIdee, einen Fehlerrückruf zu bieten, auch wenn Sie nicht denken, dass es jemals aufgerufen wird. Ohne einen haben Sie keine Möglichkeit, ein Problem zu diagnostizieren, das nicht mit dem Netzwerk verbunden ist.

Alle jQuery-ajax-Methoden (außer .load) geben ein jQuery-Versprechungsobjekt zurück, das Methoden done, fail und always ausgeführt hat. Verwenden Sie die fehlgeschlagene Methode, um Fehler zu erfassen.

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

In Ihrem Fall ist ein Fehler aufgetreten, weil eine leere Zeichenfolge nicht gültig ist.


-2 für die Antwort № 2

Sie müssen den ersten leeren Arg "" aus Ihrem .post löschen, sonst wird die URL mit einem leeren String überschrieben:

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