通过jQuery AJAX将数据发布到Python CGI脚本

我正在尝试设置一个简单的脚本,其中一些数据使用jQuery .ajax函数发送到Python CGI脚本。 Python脚本只会将数据发布到大写,然后将该数据返回到HTML文件,其中div将使用内容进行更新。

我有如下所示的代码。 当我运行它时,执行AJAX调用,但div不会更新内容。 div不会更新正在发送的数据。

我如何修改此代码,以便它与正在发送的数据一起更新?

我很感激任何帮助。

我的HTML代码:

    Python-jQuery Example   $(function() { $.ajax({ url: "http://localhost/cgi-bin/post.py", type: "post", datatype: "html", data: "here is data", success: function(response){ $("#div").html(response); console.log("There is a response"); } }); });    
Default Stuff

我的Python代码:

 #!/usr/bin/python import cgi, cgitb cgitb.enable() data = cgi.FieldStorage() print "Content-Type: text/html" print data 

编辑:我已将我的代码更新为当前显示的内容,现在文档使用此字符串更新:

 FieldStorage(None, None, []) 

我如何修改我的代码,以便div更新数据?

我相信$ .ajax中的“数据”应该像键值对的哈希。 尝试:

 $.ajax( .... data: { a: "aa", b: "bb" } ... 

如果你在div中看到类似的东西:

 MiniFieldStorage('a', 'aa') 

那你应该通过以下方式访问它:

 my_param = cgi.getfirst('a') print "Content-Type: text/html\n" print my_param 

如果它仍然无法正常工作,您可以通过GET而不是POST进行测试吗? 另外,您正在访问的AJAX文件的结构是什么? (是子目录中的文件吗?等等…)

我发现数据需要格式化为键值对,如下所示:

 $.ajax({ url: "http://localhost/cgi-bin/variousTests/post.py", type: "POST", data: {foo: 'bar', bar: 'foo'}, success: function(response){ $("#div").html(response); } }); 

在Python脚本中,我使用此代码从POST请求中获取数据(如果使用GET请求,它的工作方式完全相同):

 #!/usr/bin/python import cgi, cgitb cgitb.enable() # for troubleshooting #the cgi library gets vars from html data = cgi.FieldStorage() #this is the actual output print "Content-Type: text/html\n" print "The foo data is: " + data["foo"].value print "
" print "The bar data is: " + data["bar"].value print "
" print data
  1. 我认为您需要使用内容类型打印的换行符。

    打印“Content-Type:text / html \ n”

  2. 此外,您需要为变量数据提供参数名称。 假设您使用参数“param”发布值“xyz”。 所以它应该是:xyz所在的data [“param”]

    打印数据[“xyz”]

  3. 如果错误仍然存​​在,则从浏览器中浏览url localhost / cgi-bin / post.py并检查它返回的内容(当然,使用GET参数进行测试)。