Die AJAX-Erfolgsfunktion wurde nicht aufgerufen

8

Ich versuche, die Erfolgsfunktion von einem AJAX-Aufruf zu feuern. Ich weiß, dass es richtig funktioniert, weil ich meine eigene API treffe und ich sehe, dass es die URL richtig trifft und der Server ein HTTP 200 ausgibt.

Ich dachte, es liegt daran, dass der Server json ausgibt, also habe ich versucht, dies im AJAX-Aufruf zu berücksichtigen, aber die Erfolgsfunktion funktioniert nicht. Hier ist mein Code

Ajax

%Vor%

API-Methode

%Vor%

Serverprotokolle

%Vor%     
user2495030 03.08.2013, 03:42
quelle

4 Antworten

20

Dies ist bei mir auch ein langer zurück passiert, ich löste dies, indem ich den dataType in text änderte und diesen manuell in json object über eval umwandelte.

%Vor%

Möge dies für Sie funktionieren.

    
Ashis Kumar 03.08.2013 04:09
quelle
4

Ich würde eine komplette Funktion hinzufügen und den Textstatus überprüfen. Das sollte die Information geben, die Sie benötigen, um das Problem zu lösen.

%Vor%     
SemanticZen 03.08.2013 03:59
quelle
2

Ich denke, das Problem ist, was ich erlebt habe, und ich denke, ich habe die Antwort. Es sieht so aus, als ob Ihr Aufruf eine HTML-Ansicht abruft, wie ich aus "Rendered main / index.html.erb in layouts / application" ableite, obwohl ich nicht weiß, welchen API-Stack Sie verwenden.

Meine Symptome auf ASP.NET MVC 5 waren, dass komplett aufgerufen wurde, aber keiner von Fehler, Erfolg oder Timeout aufgerufen wurde. Auf dem Antwortobjekt war der Status 200 und statusText war "OK", aber der Parameter textStatus war "parsererror".

Der responseText ist der HTML-Code, den ich erwartet hatte, aber ich hatte vergessen, dass ich JSON nach html abruft, also nachdem ich den Datentyp 'json' in Datentyp 'html' geändert habe, funktioniert er jetzt.

    
David 03.03.2014 01:06
quelle
0

Es ruft nicht offensichtlich die Methode auf, die Sie erwarten, wenn Sie diese Klasse betrachten:

%Vor%

Wir sollten in Ihren Protokollen so etwas sehen:

%Vor%

Aber Ihre Protokolle zeigen dies:

%Vor%

Meine Vermutung ist, dass deine Routen falsch sind. Überprüfen Sie die Routen und warum sie nicht die Methode UsersController#show aufrufen. Nur um sicher zu sein, mit dem Browser (Chrome, Firefox), sollten Sie in der Lage sein, die Antwort der Anfrage zu überprüfen, um sicherzustellen, dass es tatsächlich JSON oder HTML erhält.

Da versucht wird, main.html.erb darzustellen. Ich bin nicht überrascht, dass dataType: "json" nicht funktioniert. Aber es sollte funktionieren, wenn Sie tatsächlich gültige JSON zurückgeben. Aber Ihre Rails Logs zeigen uns, dass Sie wahrscheinlich HTML zurückgeben.

    
Loïc Faure-Lacroix 03.03.2014 01:14
quelle