从javascript向python发送json数据时发生内部服务器错误

时间:2018-11-05 20:36:09

标签: javascript python ajax flask

我有一个用PHP编写的页面,其中包含一部分javascript,并且我正在尝试获取一个函数,用于将一些JSON数据发送到python文件。我对Flask真的很陌生,尽管我已经阅读了文档,但对我来说没有任何帮助。这是我的Javascript函数:

<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.validate.min.js"></script>
<script>
$(document).ready(function () {
.
.
.
function encrypt() {
  $.ajax({
    type: "POST",
    url: "/crypt",
    contentType: "application/json",
    data: JSON.stringify(generateParamsU()),
    dataType: "json",
    success: function(response) {
        console.log(response);
    },
    error: function(err) {
        console.log(err);
    }
  });
} 

我对应的python代码是:

from flask import Flask

app = Flask(__name__)

from app import routes

@app.route('/crypt', methods=['POST', 'GET'])
def crypt():
    data = request.get_json()
    return jsonify(data)

我已经设置了一些非常简单的方法来接收/发送数据。该文件位于服务器上(位于cpanel上),并且两个文件都位于同一目录中。

以现在的方式进行设置时,出现此错误:

  

http://www.myweb.org/crypt 404(未找到)

当我将AJAX发布url更改为url: "crypt.py"(文件名)时,出现以下错误:

  

POST http://www.myweb.org/custom/crypt.py 500(内部服务器   错误)

我真的不知道是什么原因造成的。我以为我在路由错误,但这就是我在网上看到它的方式。我不确定...

我认为问题是我根本没有运行python文件。如果我没有运行python文件,Flask服务器将无法启动,对吗?我不确定。任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

首先要澄清一些事情。

我不了解cpanel的详细信息,但我想您缺少一些细节。 Apache或nginx(可能在您的服务器的80端口上运行)没有默认的python处理程序,尤其是没有集成flask应用程序,这就是调用crypt.py时获得500的原因。

您应该首先以独立方式运行Flask,默认情况下,flask监听端口5000。为了以独立方式运行flask应用程序,请在代码中添加以下内容。

app.run(host='0.0.0.0', debug=True)

Run方法接受更多参数:http://flask.pocoo.org/docs/1.0/api/#flask.Flask.run

现在您可以使用以下命令启动烧瓶独立服务器

python crypt.py

烧瓶服务器将开始侦听端口5000。

您现在应该可以将数据发布到http://www.myweb.org:5000/crypt

如果您不想将flask应用程序集成到apache或nginx中,则应该配置反向代理或uwsgi,但两者都更为高级。首先,您应该了解基础知识,并让应用程序在烧瓶调试模式下独立运行。

由于您的flask应用程序现在正在侦听端口5000而不是80,因此您还需要更改ajax请求以将其发布到:http://www.myweb.org:5000/crypt,我不熟悉javascript / ajax,但我想

url: "http://www.myweb.org:5000/crypt",
就足够了。