从Python文件中获取来自Ajax POST请求的POST数据

7

我正在尝试使用ajax post请求发布一些数据,并执行一个Python文件,在Python文件中检索数据并返回结果。

以下是我的ajax代码:

        $(function () {
                    $("#upload").on("click", function (e) {
                        $.ajax({
                            type: 'post',
                            url: "test1.py",
                            data: {'param1':'abc'},
                            async: false,
                            success: function (response) {
                                console.log(response);
                            }
                        }).done(function (data) {
                            console.log(data);
                        });
                    });
                });

以下是Python文件的内容:

    #! /usr/bin/python
    from __future__ import print_function
    import cgi, cgitb
    def index():
        data = cgi.FieldStorage()
        mydata = data['param1'].value
        return return "test"

我在param1上遇到了KeyError,错误提示为"KeyError: 'param1'"。我也尝试使用getValue(data['param1']。看起来是ajax调用传递数据到要执行的python文件时出现了问题...但我无法弄清原因。

谢谢提前


我似乎无法正确地格式化JavaScript表单.. 嗯,谢谢Daniel。 - Peter
1个回答

8

我已经想出了一个解决方案。我希望其他人也能从中受益。

通过以下python代码,我成功获取了ajax调用的postdata。

    def index(req):
        postData = req.form
        json = str(postData['param'].value)

当在 index(req) 中调用 req 时,我不太清楚它是如何定义的。它指向通过 ajax 调用发送的数据吗?在另一个问题中,我发现可以使用 myDataInPython = json.load(sys.stdin) 将该 ajax 数据存储在本地,除非在进入任何函数之前使用它,否则该数据根本没有指向参数,正如您所暗示的那样。请参见链接 - sc28

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接