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

Как завершить запрос?

Я пытаюсь на сайте из базы данных получить значение из колонки.

В бэке использую JavsScript (XMLHttpRequest) и Python.
При запуске локалки на 127.0.0.1:8080 всё работает прекрасно, данные из БД возвращаются в параграф.
Запустил туннель через CloudPub, захожу в F12-Network-Timing, и получаю - CAUTION: request is not finished yet!
В CloudPub в истории запросов есть этот запрос и ответ от него тоже, но на сайте он не возвращается.
Какими-то окольными путями у меня получалось добиться завершения запроса, но получал нежеланный результат.

Ниже будут фрагменты кода.

HTML:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
    <script src="https://telegram.org/js/telegram-web-app.js"></script>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div id="usercard"></div>
    <p>FICs: <span id="result"></span></p>
</body>
    <script src="script.js"></script>
</html>


JS:
function fetchData(user_identificator, data_type){
    let xhr = new XMLHttpRequest();
    xhr.open('GET', `/cgi-bin/data.py?user_identificator=${user_identificator}&data=${data_type}`, true);
    xhr.onload = function() {
        if (xhr.status === 200) {
            console.log('Response received:', xhr.responseText);
            let data = JSON.parse(xhr.responseText);
            // document.getElementById('result').innerText = data.message;
            document.getElementById('result').innerHTML = data;
        } else {
            console.error('Error:', xhr.statusText);
        }
    };
    xhr.send();
}

fetchData("1111100000", "id");


data.py:
import cgi
import pymysql
from pymysql import cursors

db_host = 'FVH1.spaceweb.ru'
db_user = 'conventional_user'
db_password = '...'
db_name = 'database'


def get_user_data(user_id, data):
    try:
        connection = pymysql.connect(host=db_host, user=db_user, password=db_password, database=db_name, port=3306,
                                     cursorclass=cursors.DictCursor)
        with connection.cursor() as cursor:
            sql = f"SELECT {data} FROM Data WHERE user_id = %s"
            cursor.execute(sql, (user_id,))
            user = cursor.fetchone()
            if user:
                return user[data]
            else:
                return ""
    except pymysql.Error as e:
        return f"Database error: {e}"
    finally:
        if connection:
            connection.close()


print("Access-Control-Allow-Origin: *")
print("Access-Control-Allow-Methods: GET, POST, OPTIONS, CORS")
print("Access-Control-Allow-Headers: Content-Type")
print("Content-type: text/plain\n")

form = cgi.FieldStorage()
user_identificator = form.getvalue("user_identificator")
data_type = form.getvalue("data")

user_info = get_user_data(user_id=user_identificator, data=data_type)
print(f"{user_info}")


Прошу помочь разобраться, нигде так и не нашёл, где описывают очень понятно, как завершить запрос.
  • Вопрос задан
  • 534 просмотра
Подписаться 2 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@justabit
Юзай фетч и не парься: https://developer.mozilla.org/en-US/docs/Web/API/F...
Ответ написан
Ваш ответ на вопрос

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

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