gpt4 book ai didi

python - 是否可以一起使用 Python、AJAX 和 CGI

转载 作者:太空狗 更新时间:2023-10-30 02:06:12 25 4
gpt4 key购买 nike

我想要一个网页,您可以在其中单击一个按钮,通过使用 AJAX 我从 python 脚本获取一个字符串,然后将该字符串显示在一个段落 HTML 元素中。

我知道我可以通过使用 Python、WSGI 和 AJAX 来做到这一点(理论上我可以这样做)但是它太难了。我对 CGI 和 Python 很有经验。

那么我可以使用 CGI 来完成上述操作吗?

如果我可以的话,python 脚本如何工作,与使用 CGI 提供页面时完全一样?

这行不通:

import cgitb; cgitb.enable()
import cgi
import os


print "Content-Type: text/html\n"

input_data = cgi.FieldStorage()
print "hello"

当我在我的页面中单击我的按钮时,没有任何反应,我的 CGI 服务器(它可以很好地处理 CGI 页面请求)给我一个 http 501 错误。

我的 html 和 javascript:

    <!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>

最佳答案

这里有 3 个文件 [my.html、myCGI.py、myPyServer.py]。在 Windows XP 中,我将它们全部放在同一个目录中,然后双击 myPyServer.py,一切正常。

my.html 与您的 html 相同,除了:

yours: <a href="javascript:onTest('aaa.py', '')">Click it</a>
mine: <a href="javascript:onTest('/myCGI.py', 'x=7')">Click it</a>

myCGI.py 与您的非常接近

import cgitb; cgitb.enable()
import cgi
import os

input_data = cgi.FieldStorage()
if input_data:
print "Content-Type: text/html\n"
print "hello"
else:
f = open('my.html', 'r'); s = f.read(); f.close()
print "Content-Type: text/html\n"
print s

我的PyServer.py

import CGIHTTPServer
import BaseHTTPServer
import sys

class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
cgi_directories = ["/"] #make sure this is where you want it. [was "/cgi"]

PORT = 8000

httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler)

# see effbot http://effbot.org/librarybook/thread.htm
def runserver():
print "serving at port", PORT
httpd.serve_forever()

import thread
thread.start_new_thread(runserver, ())

print "opening browser"

import webbrowser
url = 'http://127.0.0.1:8000/myCGI.py'
webbrowser.open_new(url)

quit = 'n'
while not(quit=='quit'):
quit = raw_input('\n ***Type "quit" and hit return to exit myPyServer.*** \n\n')


print "myPyServer will now exit."

sys.exit(0)

关于python - 是否可以一起使用 Python、AJAX 和 CGI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5150591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com