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

Как я могу получить из ссылки ранее заданный параметр (chat_id), чтобы далее его передать cgi-скрипту в питоне?

Перепробовал способы, которые использовал раньше на других своих сайтах. Я передаю в ссылке параметр ?user_id=xxxxxxxx. Мне нужно его вытащить из ссылки и передать к файлу.py, чтобы тот вернул мне полученное значение из субд, и вставил его в параграф на index.html.

То есть, пользователь переходит по ссылке https://my.site.com/index.html?user_id=129721789 -> user_id достается из ссылки -> передается в cgi-bin/data.py -> фетчатся данные из субд через pymysql -> возвращаются в параграф на странице.html

Что-то подобное я использовал:
<body>
    <h1>Данные пользователя</h1>
    <p id="myParagraph"></p>
    <p id="data-output"></p>
    <script>
        function getParameterByName(name, url = window.location.search) {
            name = name.replace(/[\[\]]/g, '\\$&');
            var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
                results = regex.exec(url);
            if (!results) return null;
            if (!results[2]) return '';
            return decodeURIComponent(results[2].replace(/\+/g, ' '));
        }

        // Получить значение параметра 'username' из URL
        let chat_id = getParameterByName("chat_id");
        let myParagraph = document.getElementById("myParagraph");

        if (chat_id) {
          // Если параметр найден, установить его значение в параграф
          myParagraph.textContent = chat_id;
        } else {
          myParagraph.textContent = "Параметр 'chat_id' не найден в URL.";
        }
        
        
        function get_query(url) {
            let oReq = new XMLHttpRequest();
            oReq.onload = read;
            oReq.open('GET', url);
            oReq.send();
        }

        function fetch() {
            let chat_id = document.getElementById("myParagraph").value;
            let url = "cgi-bin/data.py?user_id=" + chat_id;
            get_query(url);
        }
        fetch();
    </script>
</body>


В JS не очень силен, прошу помочь разобраться в данной проблеме
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@Metotron0
Вместо регулярок можно взять URL.
XMLHttpRequest — довольно старая штука, сейчас есть fetch.
function fetchData() {
	const chatId = new URL(location).searchParams.get('chat_id')
	const p1 = document.querySelector('#myParagraph')
	const p2 = document.querySelector('#data-output')
	
	if (!p1) {
		alert('Не найден элемент #myParagraph')
		return
	}

	if (!p2) {
		p1.textContent = 'Не найден элемент #data-output'
		return
	}

	if (!chatId) {
		p1.textContent = "Параметр 'chat_id' не найден в URL."
		return
	}

	p1.textContent = chatId
	fetch('cgi-bin/data.py?user_id=' + chatId)
		.then(r => r.text())
		.then(text => {
			p2.textContent = text
		})
}
fetchData()
Ответ написан
Ваш ответ на вопрос

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

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