繁体   English   中英

带有AJAX帖子的Flask应用显示404(未找到)

[英]Flask app with AJAX post gives 404 (NOT FOUND)

我是新来的,并且制作了一个小的Flask应用程序。

我已经遍历了所有可以在网上找到的类似内容,但仍然无法获得使用AJAX将数据从客户端传递到服务器端的最小工作示例。

以下是相关的HTML:

<script type=text/javascript>
$(function() {
  $('a#test_function').bind('click', function() {
    $.ajax({
          url: $SCRIPT_ROOT + '/test',
          data: JSON.stringify({ "value":'asdf' }),
          type: 'POST'
          success: function(response) {
               console.log(response);
          },
          error: function(error) {
               console.log(error);
          }
        });
      });
    });
</script>

<h1>jQuery Example</h1>
<a href=# id=test_function>get string</a>

这是.py文件:

import os
from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, jsonify, json

# create our little application :)
app = Flask(__name__)

# Load default config and override config from an environment variable
app.config.update(
DATABASE=os.path.join(app.root_path, 'mydb.db'),
DEBUG=True,
SECRET_KEY='something',
SERVER_NAME='http://localhost:5000'
)

@app.route('/')
def welcome():
    flash('Welcome!')
    return render_template('index.html')


@app.route('/test', methods=['GET', 'POST'])
def test():
    vars = request.data
    return ', '.join([str(i) for i in vars])

当我运行服务器并尝试运行发布请求时,出现以下错误:

 POST http://127.0.0.1:5000/test 404 (NOT FOUND)

任何帮助,不胜感激!

为了通过XHR将JSON数据发布到Flask,我使用的方法是将Content-Type标题设置为"application/json" 然后,您可以从request.data对象在Flask中访问此对象。 我也清理了一些错字。

Javascript / HTML:

<script type="text/javascript">

    $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};

    $(function() {
        $('a#test_function').bind('click', function() {
            $.ajax({
                type: "POST",
                headers: {"Content-Type": "application/json"},
                url: $SCRIPT_ROOT + "/test",
                data: JSON.stringify({"key": "value"}),
                success: function(response) {
                    console.log(response);
                },
                error: function(response, error) {
                    console.log(response);
                    console.log(error);
                }
            });
        });
    });
</script>

<h1>jQuery Example</h1>
<a href="#" id="test_function">get string</a>

蟒蛇:

@app.route('/test', methods=['GET', 'POST'])
def test():
    vars = request.data
    return ', '.join([str(i) for i in vars])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM