Ответ ajax прекрасно виден в окне оповещения, но не может вывести его на печать, вместо него появляется undefined
Я пытаюсь вывести ответ на ajax-запрос. Я получаю "undefined", когда (внизу) я пишу ${obj[property][0]} он следует за индексом до 1, 2 и т.д.
Я могу видеть как в консоли, так и путем выделения ответа (данных), что он отправляет правильные данные в виде словаря, хотя это, конечно, json, потому что это то, что я отправляю в качестве ответа (и это то, что показывают веб-инструменты). Однако если я отключаю "obj", я получаю "объект", но не могу увидеть реальные значения
Это вызов ajax:
$(document).ready(function(){ // open document ready
$('.botontest').on('click',function(){ // opening click function
var value = $(this).val()
alert(value);
$.ajax({ // opening ajax obviously
url:"{% url 'bill' %}",
type:'POST',
data:{'name':value, csrfmiddlewaretoken: '{{csrf_token}}'},// closes data field
datatype:'json'
}).done(function(data) {
obj = JSON.parse( data);
alert(data); // it prints me all data alright in the "alert" box
// I leave out the headers.
for (const property in obj) {
tableHTML += "<tr><td>"
tableHTML += `${property}</td> <td>${obj[property][0]}</td><td>${obj[property][1]}</td>\
<td>${obj[property][2]}</td><td>${obj[property][3]}</td><td>${obj[property][4]}</td><td>${obj[property][5]}</td>\
<td>${obj[property][6]}</td><td>${obj[property][7]}`
tableHTML += "</td></tr>"
}
tableHTML += "</tbody></table>"
//place the tableHTML in the document
$("#respuesta").html(tableHTML);
}); // closing ajax group
console.log(value);
}); // closing the click function
});// closing document ready
</script>
Мой ответ от Django таков:
return HttpResponse(simplejson.dumps(datax, default=str))
Меня смущает то, что я скопировал этот код из другого своего проекта и там он работал нормально. скриншот из firefox webtools того, что размещено в качестве ответа
РЕДАКТИРОВАНИЕ:
They want to see the response from django. There it goes
datax = {'last_ht_water':last_hot_water,
'last_cold_water':last_cold_water,
'last_but_one_hot_water':last_but_one_hot_water,
'last_but_one_cold_water':last_but_one_cold_water}
return HttpResponse(simplejson.dumps(datax, default=str))
Все, что мне нужно было сделать, это поместить квадратные скобки вокруг значений, чтобы ответ представлял собой массив. Таким образом, код javascript на принимающей стороне распечатает его правильно.