Я написал веб-сайт form-website.html
, где можно вводить данные в форме, которая передается script.js
в мое Flask приложение server.py
. Даже после публикации (после нажатия кнопки «Отправить» выдается сообщение 127.0.0.1 - - [09/Apr/2020 12:02:44] "OPTIONS /minimum HTTP/1.1" 200 -
и сообщение об ошибке отсутствует, метод post в приложении Flask не выполняется, так как он не печатается).
form-website.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Basic Page Needs
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta charset="utf-8">
<title>Privacy Api: Deleting data from several sites for you</title>
<meta name="description" content="">
<meta name="author" content="">
<!-- Mobile Specific Metas
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSS
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/skeleton.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<!-- Primary Page Layout
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<div class="container">
<div class="row">
<div class="twelve columns" style="margin-top:30px">
<h4>Enter at least this data</h4>
<p>The websites need to identify you in order to delete your data. Thus, you will need to add some of your personal data including:</p>
</div>
</div>
<div class="row">
<div class="twelve columns">
<form method="post">
<label for="firstname">First name:</label>
<input type="text" id="firstname" name="firstname" value="">
<label for="lastname">Last name:</label>
<input type="text" id="lastname" name="lastname" value=""><br>
<label for="email">Email address:</label>
<input type="text" id="email" name="email" value="">
<label for="city">City:</label>
<input type="text" id="city" name="city" value=""><br>
<button id="minimum-info-button">Submit</button>
</form>
</div>
</div>
</div>
<script src="js/jquery.js"></script>
<script src="js/script.js"></script>
</body>
</html>
script.js
:
$(function(){
$('#minimum-info-button').click(function () {
let firstname = $("#firstname").val()
let lastname = $("#lastname").val()
let email = $("#email").val()
let city = $("#city").val()
$.ajax(
{ url:"http://localhost:5000/minimum",
type: "POST",
data: {"firstname": firstname, "lastname": lastname, "email": email, "city": city},
contentType: "application/json",
dataType:"json"
})
.done(function (data){
console.log(data.answer)
$("#add-answer").val(data.answer);
});
});
server.py
:
from flask import Flask, request, Response
import json
app = Flask(__name__)
@app.route('/minimum', methods=['POST'])
def post_minimum():
print("in post_minimum")
data = request.get_json()
firstname=data["firstname"]
lastname=data["lastname"]
email=data["email"]
city=data["city"]
print(firstname, lastname, email, city)
answer="test answer"
data = { "answer": answer, "request-content-type": "application/x-www-form-urlencoded" }
return Response(json.dumps(data), mimetype='application/json')
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', '*')
response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
return response
Я ожидаю, что "in post_minimum" и имя, фамилия, адрес электронной почты, город будут напечатаны на консоли, но это не тот случай.
Спасибо за помощь!