繁体   English   中英

如何处理从Javascript发送到Python的POST数据并返回输出?

[英]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.

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