Flask: Почему запрос POST отправляется в шаблон индекса вместо назначенного маршрута (вызывает ошибку 405)? - PullRequest
0 голосов
/ 24 сентября 2019

Я делаю приложение колбу.Пользователь отправляет форму, которая отправляется на сервер.Сервер что-то делает, и я пытаюсь добавить результаты в неупорядоченный список по мере их поступления.

Я знаю, что у меня есть другие проблемы с моим кодом, но сейчас я просто пытаюсь получитьОшибка 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>&copy;2019 Userfind</p>
          </div>
    </body>
</html>

На консоли я также получаю эту ошибку:

SyntaxError: отсутствует) после списка аргументов

для этой строки javascript:

        xhr.open('GET', '{{ url_for('search_form') }}');

Почему мой запрос POST отправляется на маршрут шаблона вместо маршрута для '/ поиск '?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...