WSGI:使用AJAX从python脚本获取字符串

WSGI:使用AJAX从python脚本获取字符串,python,ajax,cgi,wsgi,Python,Ajax,Cgi,Wsgi,我正在钻研WSGI&这相当困难 我尝试做的事情非常简单:当我单击一个链接时,我想从python脚本中获取字符串“hello”,并在我的HTML段落元素中显示“hello”。 现在,我已经制作了显示HTML文本的WSGI python脚本,即使用WSGI python为页面提供服务,但没有将python、AJAX和WSGI一起用于上述目的 现在,当我单击HTML页面中的链接时,段落元素显示“error”而不是“hello”。你认为我哪里做错了;用python还是javascript 下面的pyth

我正在钻研WSGI&这相当困难

我尝试做的事情非常简单:当我单击一个链接时,我想从python脚本中获取字符串“hello”,并在我的HTML段落元素中显示“hello”。

现在,我已经制作了显示HTML文本的WSGI python脚本,即使用WSGI python为页面提供服务,但没有将python、AJAX和WSGI一起用于上述目的

现在,当我单击HTML页面中的链接时,段落元素显示“error”而不是“hello”。你认为我哪里做错了;用python还是javascript

下面的python脚本正确吗

#!/usr/bin/env python

from wsgiref.simple_server import make_server
from cgi import parse_qs, escape

def application(environ, start_response):

   return [ "hello" ]

if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    srv = make_server('localhost', 8000, application)
    srv.serve_forever()
也许是我的Javascript和/或HTML错了

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <script type="text/javascript">
    <!--
        function onTest( dest, params )
        {
            var xmlhttp;

            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    document.getElementById( "bb" ).innerHTML = xmlhttp.responseText;
                }
            }

            xmlhttp.open("POST",dest,true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send( params ); 
        }


    -->
    </script>
</head>

<body>

    <p id="bb"> abcdef </p>
    <a href="javascript:onTest('aaa.py', '')">Click it</a>

</body>

</html>

您没有调用
start\u response
。使用如下呼叫:

start_response("200 OK", [('Content-type','text/plain')])

错误似乎来自python脚本。检查aaa.py是否可以使用IE或其他浏览器直接访问

httpd.永远为你服务()

必须在功能块之外

此处不能使用“aaa.py”作为帖子url。然后服务器将查看该文件的根目录。e、 g.localhost/aaa.py。您必须提供来自服务器根目录的完整路径(不包括服务器根目录路径)

e、 g.如果文件位于/var/www/wsgi scripts/aaaa.py
那么url应该是/wsgi scripts/aaaa.py。

谢谢。如果我正在为自己的页面提供服务,我运行脚本,然后在浏览器中键入内容,但当我运行假的wsgi服务器,然后在浏览器中运行我的html页面并单击链接时,它就不起作用了。我仍然得到“错误”。可能是我的服务器出了问题(请参阅服务器问题)?在哪里?或者这个答案已经过时了?我在上面的代码片段中看到了
start\u response()
,所以我不确定你的建议是什么。@dwanderson在我的回答帮助下编辑了他的问题。请参阅@Matthew Flaschen answer,python脚本在我运行它时工作,然后键入http…:8000,所以我认为该脚本可以,但我不确定我是否应该提供任何服务?似乎有点连线,我建议您在单击test.html中的锚之后使用firefox和firebug来监视网络。现在您使用“POST”方法上载数据,您是否可以尝试使用“GET”来代替?
start_response("200 OK", [('Content-type','text/plain')])