【问题标题】:Python Flask routes not found when using AJAX to POST [duplicate]使用 AJAX 发布时未找到 Python Flask 路由 [重复]
【发布时间】:2018-12-11 06:20:37
【问题描述】:

我正在尝试路由我的 Flask 路由并查看来自 Flask 的正确返回(返回在下面的代码中指示)。当我将我的页面指向mypage.com/ 时,我确实看到了输出,但是当我期待看到“hello world”时,它似乎正在我的控制台中返回 xxamp apache 索引页面。

这是我的目录列表:

/localhost
    /my_dir
        /js
        /templates
        app.py

这是我对/ 的 AJAX 调用:

js:

$(function(){
$('button').click(function(){
    var user = "user";
    $.ajax({
        url: '/',
        data: user,
        type: 'POST',
        success: function(response){
            console.log(response);
        },
        error: function(error){
            console.log(error);
        }
    });
});
});

这是我的烧瓶:

app.py:

from flask import Flask, request, send_file, render_template, json
from ftplib import FTP                                                                      

app = Flask(__name__)

@app.route('/')
def hello_world():
return 'hello world!'

if __name__ == "__main__":
app.run()

这里似乎有脱节。我相信我的 Apache 在 80 上运行,而 Flask 正在监听 5000。所以我的 javascript AJAX 调用实际上是在调用端口 80 而不是 5000,因此,为什么我认为我看到的返回值与预期不同。我必须在我的 AJAX 调用中指定端口,还是应该让烧瓶在端口 80 上监听?

【问题讨论】:

  • 你是否在你的 app.py 中调用了 app.run()?像这样运行 Flask 应用程序:app.run(host='0.0.0.0', debug=True, threaded=True, port=)
  • @RogerHuang 是的,对不起,我的代码中有这个。我刚刚更新了代码。
  • 使用$ curl localhost:查看你的flask应用是否收到http请求,控制台中应该有一些有用的日志。
  • @RogerHuang OH 在运行 ajax 请求之前我必须手动运行烧瓶吗?
  • 是的。您必须在本地运行服务器(可能稍后部署到其他地方)。使用以下命令:$ python app.py,您应该能够看到:* 在127.0.0.1:5000 上运行以获取更多信息:flask.pocoo.org/docs/1.0/quickstart

标签: python ajax flask


【解决方案1】:

尝试使用可接受的方法添加 POST

@app.route('/index', methods=['GET', 'POST'])
def index():
    return render_template('index.html')

【讨论】:

  • @app.route('/index')curl -X POST http://127.0.0.15000/index -d'test' 我必须 405 方法不允许响应
  • 错字? $ curl -X POST 127.0.0.1:5000/index -d'test' ?
  • 127.0.0.1:5000 :)
  • 它似乎在工作 curl -X GET http://127.0.0.1:5000/index -d'test' 但我的 AJAX 调用似乎没有到达那个端口。这是在网络服务器上运行的,我需要一些特殊的配置来进行 AJAX 调用以使调用端口 5000?
  • 我不这么认为。尝试添加变量 user / 而不是 / only。在 Ajax 调用 '/myuser' 上使用 GET 并连接您的用户
猜你喜欢
  • 2016-09-13
  • 2018-07-04
  • 2022-12-12
  • 2012-05-30
  • 2021-08-14
  • 2019-07-10
  • 2018-09-13
  • 2020-04-14
  • 2018-02-11
相关资源
最近更新 更多