繁体   English   中英

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

[英]Internal Server Error when sending json data from javascript to python

我有一个用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服务器将无法启动,对吗? 我不确定。 任何帮助,将不胜感激。

谢谢

首先要澄清一些事情。

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

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

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

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

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

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",
应该足够了。

暂无
暂无

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

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