Javascript не может правильно проанализировать json

#javascript #django #parsing #xmlhttprequest

Вопрос:

Я пытаюсь проанализировать json с помощью xhr. Я сделал файл xhr для двух страниц, и каждая страница берет разные данные из файла xhr. Если синтаксический анализатор не может найти правильный идентификатор в html-шаблоне, он не сможет обработать оставшуюся часть.

Вот js

 const xhr = new XMLHttpRequest()
method = 'GET'
xhr.responseType = 'json'

function buildTable(data){
        
}

xhr.open(method, requestURL)
xhr.onload = function() {
    if (xhr.status > 400){
        console.error(xhr.error)
    }else{
        console.log(xhr.response)
        document.getElementById('name').innerHTML = xhr.response.name 
        document.getElementById('status').innerHTML = xhr.response.status
        ....
        buildTable(xhr.response.history)
        document.getElementById('description').innerHTML = xhr.response.description
    }
}
xhr.send()
 

а вот шаблон django

 {% extends 'base_dashboard.html' %}

<div class="wrapper">
        {% include 'sidebar.html' %}
            <div id='name'></div>
            <div class="" id="status">In Progress</div>
            <div class="col-xs-12" id='description'></div>
</div>
{% load static %}
<script src="{% static '/js/xhr_dashboard.js' %}">
</script>
{% endblock content %}
 

Пример JSON

 name: "myname"
description: "This is the test description"
status: "2"
 

Комментарии:

1. можете ли вы поделиться примером этого JSON? Вы также, кажется, не анализируете никакой JSON?

2. @evolutionxbox в любом случае речь идет не о разборе json. Вопрос больше касается присвоения js соответствующего идентификатора в html

3. Я думаю, что речь идет о синтаксическом анализе. response.name скорее всего, он будет неопределенным, если response не будет проанализирован. Также пример JSON не является JSON, он больше похож на YAML.

4. «речь идет не о разборе json» — Тогда почему заголовок именно об этом: «Javascript не может правильно разобрать json» ?

5. Для быстрого решения вам, вероятно, понадобится const data = JSON.parse(xhr.responseText); тогда document.getElementById('name').innerHTML = data.name; и так далее. В долгосрочной перспективе вы должны использовать fetch() .