Estoy interesado en obtener los resultados de una operación de inserción de views.py en forma de JSON. Estoy obteniendo los resultados bien, creo. mi vista se ve así:
added={} if request.method=='POST': #Post method initiated. try: for id in allergies: allergy=PatientAllergy(patient=patient,allergy_id=id,addedby=request.user) allergy.save() added[allergy.id]=id except BaseException as e: pass return JsonResponse(added,safe=False)Los registros, pasados desde JQUERY, se agregaron con éxito a la base de datos. Lo que quiero obtener ahora es un resultado JSON en forma de {12:1, 13:2}.
Mi firebag muestra la respuesta como:
12:1 13:2No estoy seguro de si este es un JSON válido o no. Si hago una lista (agregado), da en su lugar:
0: 12 1: 13que no quiero. El problema que tengo ahora es que quiero revisar los artículos devueltos, pero obtengo resultados incorrectos. Básicamente quiero obtener 12:1, 13:2.
$.ajax({ type: "POST", url: "/patient/addallergy/", data: postForm, dataType : "json", cache: "false", success: function (result) { alert(result.length); //gives undefined, rendering the below line meaningless if (result.length>0){ $.each(result,function(key,value){ alert(key); alert(value); }); } }, fail: function (result){ } });cambia tus puntos de vista así.
added_list=[] if request.method=='POST': #Post method initiated. try: for id in allergies: added ={} allergy=PatientAllergy(patient=patient,allergy_id=id,addedby=request.user) allergy.save() added[allergy.id]=id added_list.append(added) except BaseException as e: pass return JsonResponse(added_list,safe=False)y en jquery
$.ajax({ type: "POST", url: "/patient/addallergy/", data: postForm, dataType : "json", cache: "false", success: function (result) { alert(result.length); //gives undefined, rendering the below line meaningless if (result.length>0){ alert(JSON.stringify(result)) $.each(result,function(index,value){ console.log(value); }); result.forEach( function (eachObj){ for (var key in eachObj) { alert(key); alert(eachObj[key]) } }); } }, fail: function (result){ } });