了解如何使用CGI和POST

Understanding how to use CGI and POST

本文关键字:POST CGI 何使用 了解      更新时间:2023-09-26

我试图了解如何使用Python和javascript,以便我可以使用POST/GET命令。我有一个按钮,它向服务器端python发送请求,并且应该返回一个值。我知道如何打印出一个响应,但我想传递一个值给一个javascript变量,而不是只是打印东西的响应。

例如,我的javascript使用jquery POST函数向python文件发送一个字符串:
 <script>               
    function send(){
        $.ajax({ 
            type: "POST",
            url: "pythondb.py", 
            data:{username: 'william'},  
            async: false,
            success: function(){  
                alert('response received')              
            }, 
        dataType:'json'
        }); 
    }
  </script>

然后使用python cgi模块,我可以打印出username的值:

#!/usr/bin/env python
import cgi
print "Content-Type: text/html"
print
form = cgi.FieldStorage()
print form.getvalue("username")

然而,我没有以相同的方式接收数据,php echo函数的工作原理。是否有一个相当于'echo'的python cgi模块?

我读过这个问题,它解释了不同的python框架,可以用来在浏览器和服务器之间进行通信;目前我希望保持事情尽可能简单,并使用cgi模块,但我不知道这是否是最好的选择。

您的success:函数可以接受一个参数,jQuery将AJAX请求的响应内容传递给该参数。试试这个,看看会发生什么:

 <script>               
    function send(){
        $.ajax({ 
            type: "POST",
            url: "pythondb.py", 
            data:{username: 'william'},  
            async: false,
            success: function(body){  
                alert('response received: ' + body);              
            }, 
            dataType:'json'
        }); 
    }
  </script>

注:你为什么使用async: false ?这有点违背了AJAX的大部分意义。

您的json格式不正确。

根据http://api.jquery.com/jquery.parsejson/,

  • 用户名需要加引号
  • 只能使用双引号

它看起来像这样:

{"username": "william"}
此外,您的警报应该在的末尾有一个分号。我不能保证这个答案将解决您的问题,但可能是您的数据根本没有传递给cgi。