2016-04-11 5 views
3

Ich habe sowohl JsonResponse und HttpResponse (zusammen mit json.dumps) versucht, aber obwohl Ajax zum Erfolg zurückkehrt, zurückgegebene JSON kann nicht von $ .parseJSON (returned_json) analysiert werden.Django View kann JSON auf AJAX-Erfolg nicht zurückgeben?

Ich bin sicher, dass das Problem nicht mit Parsen ist ($. ParseJSON (returned_json)) durch json.dumps Wert in Terminal Ausdrucken und Kopieren der Wert in eine Variable und es bis zu $ ​​.parseJSON geben, und es erfolgreich analysiert es.

Ich versuchte einfachste json zu passieren, aber es scheitert auch deren Beispiel zeige ich unter: In views.py

from django.http import JsonResponse 

Meiner Ansicht, die Ajax ist der Umgang:

return JsonResponse({"stat":"Success"}) 

In meinem Ajax-Datei:

$.ajax({ 
    url:"feed/get_comments/", 
    type: "GET", 
    data:{c_id: cid}, //cid is a variable initialized above and not creating any problem 
    success: function(ret_json){ 
     alert("Inside success"); //Running everytime 
     var sam_json = '{"stat":"Success"}'; //same as what is given in JsonResponse 
     var data = $.parseJSON(ret_json); //for debugging change to sam_json 
     alert(data); //with sam_json alerting with dictionary, with ret_json not giving any alert 
    }, 

Anstelle von JsonResponse, wenn ich json.dumps mit wit verwenden h HttpResponse dasselbe passiert. Von oben kann ich nur schließen, dass JsonResponse und HttpResponse Daten im JSON-Format nicht zurückgibt, obwohl json.dumps erfolgreich im JSON-Format konvertiert (wie ich kopiert und eingefügt in AJAX-Variable). Bitte helfen Sie.

+0

Ich habe das auch versucht, aber es war nutzlos. dataType: "json" definiert den zurückgegebenen Typ und wenn wir ihn explizit analysieren (mit $ .parseJSON()), können wir ihn überspringen – Sid

Antwort

2

parseJSON wird nicht benötigt.

Da Sie nur mit einem Wörterbuch arbeiten, können Sie einfach darauf zugreifen, wie Sie es mit einem anderen Wörterbuch in Javascript

Zum Beispiel.

alert(ret_json.stat); 
+2

Beide Lösungen haben funktioniert! – Sid

1

Mit Httpresponse und json dump, können Sie Antwortdaten in js wie diese

var val = $.ajax({ 
    url:"feed/get_comments/", 
    type: "GET", 
    data:{c_id: cid}, //cid is a variable initialized above and not creating any problem 
    success: function(ret_json){ 
     alert("Inside success"); //Running everytime 
     var sam_json = '{"stat":"Success"}'; //same as what is given in JsonResponse 
     var data = jQuery.parseJSON(val.responseText); //for debugging change to sam_json 
     alert(data); //with sam_json alerting with dictionary, with ret_json not giving any alert 
    },  

val.responseText haben die Daten die Sie senden aus dem Blickfeld zu bekommen.

+1

Beide Lösungen funktionierten! – Sid

Verwandte Themen