Me las arreglo para enviar la solicitud ajax al servidor, y el servidor responde con una lista de tuplas o también podría ser un diccionario, pero en el html que envió la solicitud, esta lista o dictado se convierte en una cadena y No puedo iterar o trabajar en él. Esto se debe a html (datos), pero no conozco ninguna otra variante que no sea texto (datos), pero eso no resuelve el problema. Entonces, una vez que envié esa lista o dictado, ¿cómo puedo trabajar en él (como hacer iteraciones)? Estoy usando DJANGO.
Simplifico el código porque esto es lo que importa, supongamos que ya tengo un diccionario que convierto en una lista: SERVIDOR (VER FUNCIÓN) DEVUELVE:
dictionary = { "key1": "value1", "key2": "value2" } lista = list(dictionary.items()) return HttpResponse(lista)Luego, de vuelta en el código html que envió la solicitud, este resultado no mantiene la naturaleza de la lista, pero parece una cadena
PÁGINA HTML:
... .. datatype:'html' }).done(function(data) { $("#received_answer").html(data); }); // closing ajax group console.log(value); }); // closing the click function });// closing document ready </script> Obtengo esto: ('key1', 'value1')('key2', 'value2')
EDITADO: necesito tabular los resultados, así que algo como esto
$("#respuesta").html("<h5>"+data.heating+"</h5>");no ayudará, porque no puedo escribir cada celda y fila con comillas dobles, me gustaría que el conjunto de consultas de Django pueda recorrer.
Como observa, dictionary.items() devuelve tuplas, por lo que puede que no sea el mejor enfoque.
Puede usar un paso intermedio como convertir a JSON para pasar tales estructuras
en tu vista
import json dictionary = { "key1": "value1", "key2": "value2" } json_dict = json.dumps(dictionary) return HttpResponse(json_dict)y luego en su javascript, obtendrá una cadena mucho más parecida a javascript, que su código existente debería recoger. También puede analizar la respuesta de la cadena en un objeto js y usarla para recorrerla.
.done(function(data) { ///in case we need to debug, we can have a look at what is in data console.log(data) obj = JSON.parse( data); tableHTML = "<table><thead><th>Header1</th><th>Header2</th></thead><tbody>" ///iterate through properties with string keys for (const property in obj) { tableHTML += "<tr><td>" tableHTML += `${property}</td></td> ${obj[property]}` tableHTML += "</td></tr>" } tableHTML += "</tbody></table>" //place the tableHTML in the document $("#respuesta").html("tableHTML);