Я пытаюсь использовать запрос get для запуска сценария python и возврата результата, используя AJAX, Nodejs (используя express) и Python -Shell (который запускает на стороне сервера * 1023) * скрипт). Я хочу, чтобы этот результат был возвращен в div на моей странице.
Код возвращает результат из скрипта python обратно на веб-страницу (он мигает на секунду в div), но затем почти сразу же страница перезагружается.
Моя клиентская сторона JS Функция (которая запускается через событие нажатия кнопки)
function getResult() {
xmlhttp = new XMLHttpRequest()
ResultCoords = encodeURI('oLat=' + document.getElementById('originLat').innerHTML + '&oLng=' + document.getElementById('originLng').innerHTML + '&dLat=' + document.getElementById('destLat').innerHTML + '&dLng=' + document.getElementById('destLng').innerHTML);
xmlhttp.open("GET", "http://localhost:3000/run?" + ResultCoords, false);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
string = xmlhttp.responseText;
document.getElementById('result').innerHTML = string
}
}
xmlhttp.send(ResultCoords)
}
Мой серверный скрипт
router.get('/run?*', (req, res) => {
let options = {
mode: 'text',
pythonPath: 'my python path',
pythonOptions: ['-u'],
scriptPath: 'my script path',
args: [req.query.oLat, req.query.oLng, req.query.dLat, req.query.dLng]
};
PythonShell.run('pythonScript.py', options, function (err, results) {
if (err) throw err;
console.log(results);
const data = results;
return res.send(data)
});
});
Я все еще очень начинающий с express, AJAX et c. так что я открыт для любых предложений по улучшению кода, если это не правильный способ делать подобные вещи и т. д. c.
Спасибо!