Сервер возвращает список кортежей на ajax запрос, но обратно в html мне нужно его обработать, а html(data) не дает правильной структуры
Мне удается отправить ajax запрос на сервер, и сервер отвечает списком кортежей или это может быть и словарь, но обратно в html, который отправил запрос, этот список или dict как бы превращается в строку, и я не могу итерировать или работать с ним. Это происходит из-за html(data), но я не знаю другого варианта, кроме как text(data), но это не решает проблему. Итак, после отправки списка или диктанта, как я могу работать с ним (например, выполнять итерации) Я использую DJANGO.
Я упрощаю код, потому что это главное, предположим, у меня уже есть словарь, который я превращаю в список: SERVER (ФУНКЦИЯ VIEW) RETURNS:
dictionary = {
"key1": "value1",
"key2": "value2"
}
lista = list(dictionary.items())
return HttpResponse(lista)
Затем обратно в html-код, который отправил запрос, этот результат не сохраняет характер списка, но выглядит как строка
HTML СТРАНИЦА:
...
..
datatype:'html'
}).done(function(data) {
$("#received_answer").html(data);
}); // closing ajax group
console.log(value);
}); // closing the click function
});// closing document ready
</script>
Я понял это: ('key1', 'value1')('key2', 'value2')
Как вы заметили, dictionary.items() возвращает кортежи, так что, возможно, это не лучший подход.
Для передачи таких структур можно использовать промежуточный шаг, например, преобразование в JSON
на ваш взгляд
import json
dictionary = {
"key1": "value1",
"key2": "value2"
}
json_dict = json.dumps(dictionary)
return HttpResponse(json_dict)
и затем в вашем javascript вы получите строку, выглядящую гораздо более javascript-образно, которую ваш существующий код должен подхватить. Вы также можете разобрать строковый ответ обратно в js объект.
obj = JSON.parse( json_dict);
console.log(obj['key1'])
///iterate through properties with string keys
for (const property in obj) {
console.log(`${property}: ${obj[property]}`);
}