Не могу получить ответ от python скрипта и на его основе создать список (зависимые списки js ajax python)

196 просмотра
0
0 Комментариев

Привет!
Есть необходимость сделать динамические списки при помощи js, ajax jQuery, Python.
Данные в скрипт передал, сделал выборку по базе, по вот как вернуть ответ и как по нему заполнить поле выбора города на основании региона не могу понять.
Вот код страницы с дивами из которых беру данные и в который пытаюсь подгрузить города:

<!DOCTYPE html>
<html>
 
<head>
    <meta charset="utf-8">
    <title>Отправить комментарий</title>
    <link href='../css/style.css' rel='stylesheet' type='text/css'>
</head>
 
<body>
 
    <form name="comm_send" action="../cgi-bin/form.py" class="comm_send" onsubmit="return ValForm()">
 
        <div class='form'>
            <label for='region'>Регион: </label>
            <select size="1"  id='region' name="region" onchange="selectRegion(this.value)">
                <option value=""></option>
                <option value="1">Краснодарский край</option>
                <option value="2">Ростовская область</option>
                <option value="3">Ставропольский край</option>
            </select>
        </div>
 
        <div class='form'>
            <div>Населённый пункт:<select id="city" name="selectDataRegion" value=""></select></div>
        </div>
 
        <div class="form">
            <input type="submit" value='Отправить'>
        </div>
 
    </form>
 
    <script type="text/javascript" src="../script/jquery.js"></script>
    <script type="text/javascript" src="../script/script.js"></script>
    <script type="text/javascript">
 
        function selectRegion(){
                var id_region = $('select[name="region"]').val();
                if(!id_region){
                        $('div[name="selectDataRegion"]').html('');
                }else{
                        $.ajax({
                                type: "GET",
                                url: "../cgi-bin/select_city.py",
                                data: {'id_region': id_region},
                                success: function(city) {
                                    var cities = city;
                                    var text = "<option value=''>Выберите город</option>";
                                    document.comm_send.city.innerHTML = cities;
 
                                }
                        });
                };
        };
    </script>
 
</body>
 
</html>

И вот код скрипта на python:

#!/usr/bin/env python3
 
import cgi
import sqlite3
 
conn = sqlite3.connect("comm.db")
cursor = conn.cursor()
 
receive = cgi.FieldStorage()
id_region = int(receive.getvalue("id_region"))
 
cursor.execute("SELECT city FROM cities WHERE region_id=?", (id_region,))
data = cursor.fetchall()
 
print(data)

Подскажите, пожалуйста, что я не так сделал. Заранее спасибо!


Добавить комментарий

1 Ответы

Python Опубликовано 10.12.2018
0

Всем спасибо, помогли уже разобраться.
Итого код на js:

function selectRegion(){
                var id_region = $('select[name="region"]').val();
                if(!id_region){
                        $('div[name="selectDataRegion"]').html('');
                }
                else {
                    $.ajax({
                        type: "GET",
                        url: "../cgi-bin/select_city.py",
                        data: {'id_region': id_region},
                        dataType: "json",
                        success: function(ls) {
                            var html = '';
                            $.each(ls, function (i, d){
                                html += '<option value="' + d[0] + '">' + d[1] + '</option>';
                            });
                            document.comm_send.city.innerHTML = html;
                        }
                    });
                };
        };

и код на python:

#!/usr/bin/env python3
 
import cgi
import sqlite3
from json import JSONEncoder
 
conn = sqlite3.connect("comm.db")
cursor = conn.cursor()
 
receive = cgi.FieldStorage()
id_region = receive.getvalue("id_region")
 
cursor.execute("SELECT id, city as value FROM cities WHERE region_id=?", (id_region,))
data = cursor.fetchall()
 
print('Content-Type: application/json\n\n')
print(JSONEncoder().encode(data))

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up