У меня есть очень простая HTML Форма. Я хочу передать входные данные в сценарий CGI (Python), который сохранит их в таблицу mysql.
<!DOCTYPE html>
<html>
<body>
<h2>Cadastro</h2>
<form name="cadastro" id="cadastro" action="/cgi-bin/cadastro.py" method="POST">
<label for="nome">Nome completo:</label><br>
<input type="text" id="nome" name="nome" required><br>
<label for="mae">Nome completo da mãe:</label><br>
<input type="text" id="mae" name="mae" required><br>
<br><br>
<input type="submit">
</form>
</body>
</html>
Форма отлично работает, и данные правильно сохраняются в таблице mysql .
Однако я хотел сделать «успешное» сообщение при нажатии кнопки «Отправить» вместо того, чтобы перенаправить его на скрипт cgi.
Я считаю, что самый простой способ сделать это - использовать javascript. Затем я попытался добавить это к коду:
<script>
const cadastro = document.getElementById("cadastro");
cadastro.addEventListener("submit", (e) => {
e.preventDefault();
const request = new XMLHttpRequest();
request.open("post", "/cgi-bin/cadastro.py")
request.send();
});
</script>
Вот сценарий python, в случае необходимости:
print("Content-type: text/html\r\n\r\n")
import cgi, mysql.connector
db = mysql.connector.connect(
host = "xxx",
user = "yyy",
password = "aaa",
database = "bbb",
)
cadastro = cgi.FieldStorage()
def add_cliente(nome, mae):
cursor = db.cursor()
cursor.execute("INSERT INTO cadastro (nome, mae) VALUE (%s, %s)", (nome, mae))
db.commit()
return print(cursor.rowcount, "record inserted.")
add_cliente(cadastro.getvalue("nome"), cadastro.getvalue("mae"))
Однако пользовательский ввод сохраняется как NULL в таблице mysql. Может ли кто-нибудь помочь, пожалуйста?