Я отправил эту форму в приложение flask, используя AJAX метод выборки, но по какой-то причине он не go до сервера, я могу предупредить ввод без проблем.
<html>
<head>
<title>TODO App</title>
</head>
<style>
.hidden {
display: none;
}
</style>
<body>
<form id="form" >
<input type="text" id="description" name="description" />
<input type="submit" value="Create" />
</form>
<div id="error" class="hidden">Something went wrong</div>
<uL id="todos">
{%for d in data%}
<li>{{d.description}}</li>
{%endfor%}
</uL>
</body>
<script>
document.getElementById('form').onsubmit = function(e) {
e.preventDefault();
//alert(document.getElementById('description').value);
let desc = document.getElementById('description').value;
alert(desc);
fetch('/todos/create', {
method: 'POST',
body: JSON.stringify({
'description': desc
}),
headers: {
'content-type': 'application/json'
}
})
.then(function (response){
return response.json();
})
.then(function(jsonResponse){
console.log(jsonResponse);
const liItem = document.createElement('LI');
liItem.innerHTML = jsonResponse['description'];
document.getElementById('todos').appendChild(liItem);
})
.catch(function(){
document.getElementById('error').className = '';
})
}
</script>
</html>
функция python, которая при необходимости прослушивает это:
@app.route('/todos/create', methods=['POST'])
def create_todo():
#description = request.form.get('description', '')
description = request.form.get_json()['description']
todo = Todo(description=description)
db.session.add(todo)
db.session.commit()
#return redirect(url_for('index'))
return jsonfiy({
'description' : todo.description
})
текстовый ввод с описанием id = - это тот вопрос, о котором я всегда получаю сообщение об ошибке, указанное в catch , не уверен в чем проблема! когда функция python имела значение по умолчанию, в случае, если поле не было заполнено, элемент добавлялся в базу данных без проблем, но когда я удалял значение по умолчанию, возникают проблемы, потому что ввод не переносится на сервер