Задать вопрос
@E170CF34

Как передать переменную из Java Script в HTML?

Добрый день,

Я делаю проект на Django. Мне необходимо было сделать выпадающие списки на HTML странице. Значения второго списка зависят от первого. Поэтому мне пришлось использовать Java Script. Мне удалось сделать зависимый выпадающий список и отправить информацию в Django о том какие значения списков выбраны.
На основании этих данных, я сформировал Queryset из базы данных и отправил их назад в Java Script через JSON response. На основании сформированных данных из базы данных, я хочу сформировать таблицу.

Я столкнулся с такой проблемой: Как теперь передать полученные данные из Java Script в HTML как переменную, чтобы я смог сформировать таблицу используя шаблонизатор? Т.е передать данные так как мы бы их передали, используя функцию render пример:
return render(request, 'oilcons/index.html', context)


Мой js файл, смотри функцию
aircraftForm.addEventListener
success: function(response) {
console.log(response)
tablePrint.innerHTML = response - как передать "response" как переменную в HTML


const aircraftInput = document.getElementById('ac_get')
const engineInput = document.getElementById('select_eng')
const defaultEngine = document.getElementById('default_eng')
const btnBox = document.getElementById('btn-submit')
const aircraftForm = document.getElementById('ac-eng-form')
const csrf = document.getElementsByName('csrfmiddlewaretoken')
const flighInput = document.getElementById('flights')
const tablePrint = document.getElementById('table_with_data')

aircraftInput.addEventListener('change', e=>{
    console.log(e.target.value)
    const selectedAircraft = e.target.value
    engineInput.innerHTML = ""
    engineInput.appendChild(defaultEngine)
    engineInput.selectedIndex = 0
    btnBox.classList.add('button-disable')
    $.ajax({
        type: 'GET',
        url: `models-json/${selectedAircraft}/`,
        success: function(response) {
            console.log(response)
            const enginesData = response.data
            enginesData.map(item=>{
                const option = document.createElement('option')
                option.value = item.Ser_Num
                option.label = item.Ser_Num
                console.log(item.Ser_Num)
                engineInput.appendChild(option)
            })

            engineInput.addEventListener('change', e=>{
                btnBox.classList.remove('button-disable')
            })

        },
        error: function(error){
            console.log(error)
        }
    })

    })

aircraftForm.addEventListener('submit', e=>{
    e.preventDefault()
    console.log('submittted')
    
    $.ajax({
        type: 'POST',
        url: '/show-data/',
        data: {
            'csrfmiddlewaretoken': csrf[0].value,
            'engine': engineInput.value,
            'flights': flighInput.value,
        },
        
        success: function(response) {
            console.log(response)
            tablePrint.innerHTML = response
        },
        error: function(error){
            console.log(error)
        }
    })
})


Как я хочу сформировать таблицу в HTML:

<table>
            <thead>
            <tr>
                <th rowspan="2">Flight</th>
                <th rowspan="2">Date</th>
                <th colspan="2">Oil quantity, %</th>
                <th colspan="2">Oil temperature, %</th>
                <th rowspan="2">dt, hr</th>
                <th rowspan="2">Engine FH</th>
                <th colspan="4">Oil Consumption, Quarts/hr</th>
            </tr>
            <tr>
                <th>Qa</th>
                <th>Qb</th>
                <th>Ta</th>
                <th>Tb</th>
                <th>QH, raw</th>
                <th>Average for 10 flights</th>
                <th>Average for 20 flight</th>
                <th>Average for 30 flight</th>
            </tr>
            </thead>
            <tbody id="table_with_data">
            {% for row in table %}
            <tr>
                <td>{{row.Flight_Num}}</td>
                <td>{{row.Flight_Date}}</td>
                <td>{{row.Oil_Quantity_Departure}}</td>
                <td>{{row.Oil_Quantity_Arrival}}</td>
                <td>{{row.Oil_Temperature_Departure}}</td>
                <td>{{row.Oil_Temperature_Arrival}}</td>
                <td>{{row.Flight_Time}}</td>
                <td>{{row.Engine_TSN}}</td>
                <td>{{row.Oil_Cons_Current_Flight}}</td>
                <td>{{row.Oil_Cons_10_Flights}}</td>
                <td>{{row.Oil_Cons_20_Flights}}</td>
                <td>{{row.Oil_Cons_30_Flights}}</td>
            </tr>
            {% endfor %}
            </tbody>
            <tfoot>
            <tr>
                <td colspan="12">* Oil Consumption limit IAW AMM is 0.25 quart/h</td>
            </tr>
            </tfoot>
        </table>


View функция:

def get_eng_sn(request):
    if is_ajax(request=request):
        engine = request.POST.get('engine')
        flight = int(request.POST.get('flights'))
        data_to_table = Engine.objects.filter(Ser_Num=engine).order_by('-id')[:flight].values()
        return JsonResponse(list(data_to_table), safe=False)
    return JsonResponse({'result': False})


Буду благодарен за помощь!
  • Вопрос задан
  • 325 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы