Сервер возвращает список кортежей на 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]}`);
}
Вернуться на верх