[英]How can I get a return value from a post request sent from javascript to flask
[英]How to process POST data sent from Javascript to Python and return the output?
我不太了解python及其如何与我的代码一起使用。 我正在尝试将数据发布到python脚本并从中获取返回值,但是python脚本似乎没有收到它。 我试图在这里查找各种帖子,但仍然感到困惑,为什么这不起作用。 我想念什么吗?
我的JS:
var x=[1,1,2,2,3,3], y=[4,2,2,6,5,4];
function testArraytoJSON(){
var ourJSON = {'x':x,'y':y}
console.log(ourJSON);
$.post('test.py', JSON.stringify(ourJSON),function(data){
console.log(data);
console.log('returned');
},'json');
};
这是HTML:
<html>
<head>
<title>PYthon Post Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src='hello.js'></script>
</head>
<body>
<button onclick="testArraytoJSON()">HERE</button>
</body>
</html>
Python脚本:
#!/usr/bin/python
import sys, json,
import numpy as np
# Feature scaling to range of 0-255
def scale(data):
data[:] = [(255*(x - min(data)) / (max(data) - min(data)) ) for x in data]
return(data)
def twoDColorPalette(x,y,greenValue=0):
if len(x) != len(y):
raise ValueError('x and y values needs to be the same length')
else:
x[:] = scale(x)
y[:] = scale(y)
return(np.column_stack( (x, [greenValue] * len(x), y) ) )
# Load the data that PHP sent us
try:
data = json.loads(sys.argv[1])
x = data['x']
y = data['y']
twoDColorPalette(x, y)
except:
print "ERROR"
sys.exit(1)
您在评论中说这应该通过CGI运行,但是您根本没有将其构造为CGI脚本。
CGI脚本不从命令行参数读取; 它们通过stdin接受输入,Python提供了cgi.FieldStorage
类来处理这些参数并通过类似字典的接口访问它们。
同样,您的脚本对功能的结果不执行任何操作。 它只是把它扔掉。 CGI脚本需要编写对stdout的响应,该响应必须采用HTTP格式:即,一个或多个标头行,空白行,然后是输出。 在Python CGI脚本中,您可以简单地通过print
生成它们。
请注意,您非常聪明地隐藏了Python会提供的任何有用的错误信息,其中包括一个简单地打印“ ERROR”的全包except
子句。 不要那样做 。 出现异常是有原因的,这是为了向您确切说明出了什么问题。 删除该try / except。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.