Wie debugge ich ein jQuery-Ajax-request?
Mein code ist:
var test = "it isn't working";
var response = $.ajax({
type: 'GET',
url: 'jquerydemo.php', //This is in the same site as the page calling this request, so it's not a same-domain error.
success: function(){
test = "it's working";
},
error: function(){
alert("Error detected");
}
}).responseText;
alert(test);
Getestet habe ich den status-code und es kam zu einem 200-und die error-Funktion geht nie aus, aber das macht auch den Erfolg der Funktion. Wie ich schon sagte in meinem Kommentar, es ist nicht ein same-origin-policy-Fehler. Es bleibt nur zu sagen "es funktioniert nicht". Was ist denn hier Los?
InformationsquelleAutor needhelpwithsumajax | 2011-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
InformationsquelleAutor Fernando Fabreti
Ihre ajax-Aufruf ist asynchron. Es ist noch nicht abgeschlossen, wenn Sie Ihre Warnung zu Ende läuft. Legen Sie eine tatsächliche Warnung in der success Funktion und Sie sollte das Ergebnis da ist.
Denkt daran, dass der ajax-Aufruf einfach startet den asynchronen ajax-Aufruf und dann der rest deines code wird weiterhin ausgeführt. Im code-Beispiel gepostet, das bedeutet, dass Ihre
alert(test)
call läuft sofort, bevor der ajax-Aufruf abgeschlossen wurde.Können Sie NUR prüfen, die Ergebnisse der ajax-Aufruf von innerhalb der Erfolgs-handler selbst.
async: true
zu den Einstellungen, die Sie übergeben Sie in Ihrerajax
nennen, aber im Kopf behalten, dass dies halt, dass der gesamte thread der Ausführung im Skript, bis die Anforderung zurückgegeben hat.Ich nehme an, du meintest
async: false
. Drehen Sie den ajax-Aufruf in ein synchroner Aufruf ist in der Tat eine option, aber da es sperren, bis die gesamte web-Seite für die Dauer der ajax-Aufruf, es ist selten das beste design Wahl. Es ist schwieriger zu Programmieren mitasync: true
, sondern bietet eine bessere user experience.Hoppla, dumme Tippfehler meinerseits. Ja,
async: false
. Es ist nicht notwendigerweise wahr, dass eine synchrone ajax-Anfrage sperren, bis die gesamte Seite (zumindest gibt es eine Reihe von Umständen, unter denen es nicht), aber es ist sicherlich besser als die Praxis, um alle Logik unter Berufung auf die Antwort in Ihrem Erfolgs-callback.wenn würde
async: false
nicht einsperren Ihre Seite, bis der Anruf beendet ist?Die Besondere situation habe ich mich nicht sperren, bis die Seite, nachdem alle. Kleinlaut zurückgezogen.
InformationsquelleAutor jfriend00
Debuggen dieser Art von Dingen, ich finden Firebug ein unverzichtbares Werkzeug. Es wird Ihnen zeigen, genau die Antwort vom server (500 Fehler, 553 Fehler, was auch immer). Sie können Breakpoints im Javascript-code und debug-Schritt für Schritt. Firebug funktioniert mit Firefox.
Für IE, können Sie die Developer Tools feature, welches ähnlich wie Firebug, speziell auf IE9 scheint reifer als die vorherigen Versionen der Entwickler-Tools für den IE7 oder IE8.
Sie können auch einfach die Tastenkombination STRG-SHIFT-J in Chrome
InformationsquelleAutor Icarus
Bewegen, dass alert(test) von Ende in der success Funktion der ajax-call.
Wenn es Warnungen, es bedeutet, dass der code funktioniert, was es sonst nicht ist. Sie können nur Debuggen von ajax-call auf seinen Erfolg zurück.
Hoffe, das hilft.
InformationsquelleAutor AlphaMale
Können Sie es machen wie
Dies funktionieren wird....
InformationsquelleAutor Dhrumil Shah