Я делаю приложение колбу.Пользователь отправляет форму, которая отправляется на сервер.Сервер что-то делает, и я пытаюсь добавить результаты в неупорядоченный список по мере их поступления.
Я знаю, что у меня есть другие проблемы с моим кодом, но сейчас я просто пытаюсь получитьОшибка 405, чтобы уйти.
Кажется, что вместо отправки почтового запроса в '/ search' root отправляет его в '/', который является шаблоном индекса.
main.py:
@app.route('/')
def index():
return render_template("index.html")
@app.route('/search', methods=['GET', 'POST'])
def search_form():
print(request.form)
x = request.form['id']
a = Vbulletin(x)
def result_gen():
return a.reg_ver()
result_gen()
def generate_resp():
for text in result_gen():
print(text)
yield text
return app.response_class(generate_resp(), mimetype='text/plain')
app.run()
forumsearch.js:
$(document).ready(function(){
$("#submit").on('click',function(e){
e.preventDefault();
req = $.ajax({type: "POST",
url: "/search",
data: { id: $("#searchinput").val()},
});
req.done(function(temp){
alert("POST was sent.");
var latest = document.getElementById('latest');
var output = document.getElementById('output');
var xhr = new XMLHttpRequest();
xhr.open('GET', '{{ url_for('search_form') }}');
xhr.send();
var position = 0;
function handleNewData() {
var messages = xhr.responseText.split('\n');
messages.slice(position, -1).forEach(function(value) {
latest.textContent = value;
var item = document.createElement('li');
item.textContent = value;
output.appendChild(item);
});
position = messages.length - 1;
}
var timer;
timer = setInterval(function() {
handleNewData();
if (xhr.readyState == XMLHttpRequest.DONE) {
clearInterval(timer);
latest.textContent = 'Done';
}
}, 1000);
});
});
});
index.html:
<!DOCTYPE html>
<html>
<head>
<title>UserFind Home</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}">
<script type="text/javascript" src="{{ url_for('static', filename='forumsearch.js') }}"></script>
</head>
<body>
<nav>
<ul id="navlist">
<h1>Userfind</h1>
<li><a class="btn" href="#home">Home</a></li>
<li><a class="btn" href="#contact">Contact</a></li>
<li><a class="btn" href="#about">About</a></li>
<form method="POST" name="searchbar">
<ul id="navsearch">
<li class="search">
<input type="text" id="searchinput" name="searchinput" placeholder="Search for User here. Must be atleast 5 characters long.">
</li>
<li><button type="submit" id="submit" class="btn-default">Submit</button></li>
</ul>
</form>
</ul>
</nav>
<p>This is the latest output: <span id="latest"></span></p>
<p>This is all the output:</p>
<ul id="output"></ul>
<div class="footer">
<p>©2019 Userfind</p>
</div>
</body>
</html>
На консоли я также получаю эту ошибку:
SyntaxError: отсутствует) после списка аргументов
для этой строки javascript:
xhr.open('GET', '{{ url_for('search_form') }}');
Почему мой запрос POST отправляется на маршрут шаблона вместо маршрута для '/ поиск '?