Probé tanto JsonResponse como HttpResponse (junto con json.dumps) pero aunque ajax está volviendo al éxito, $.parseJSON (returned_json) no puede analizar el json devuelto.
Estoy seguro de que el problema no es analizar ($. parseJSON (returned_json)) imprimiendo el valor json.dumps en la terminal y copiando el valor en una variable y dándoselo a $ .parseJSON, y lo analizó con éxito.
Intenté pasar el json más simple, pero también falla, cuyo ejemplo muestro a continuación: en views.py
from django.http import JsonResponseEn mi opinión, que está manejando ajax:
return JsonResponse({"stat":"Success"})En mi archivo ajax:
$.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 },En lugar de JsonResponse, si uso json.dumps junto con HttpResponse, sucede lo mismo. Desde arriba, solo puedo concluir que JsonResponse y HttpResponse no devuelven datos en formato json a pesar de que json.dumps se está convirtiendo con éxito en formato json (ya que copié esto y lo pegué en la variable ajax). Por favor ayuda.
parseJSON no es necesario.
Como solo está trabajando con un diccionario, puede acceder a él como lo haría con cualquier otro diccionario en javascript
Por ejemplo.
alert(ret_json.stat);Con HttpResponse y json dump, puede obtener datos de respuesta en js como este
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 tendrá los datos que está enviando desde la vista.