服务器 returns CherryPy 中客户端的值
server returns value to client in CherryPy
我是网络开发的新手,正在学习使用 CherryPy 作为网络服务的后端。我正在按照这个 tutorial 将请求从客户端发送到服务器(我想知道是否还有其他方法?)。使用 cherrypy 在 python 中编写的服务器然后处理请求并且应该 return 一个值(变量)到客户端(html 和 js),这就是我被卡住的地方。服务器如何将return变量返回给客户端?我很困惑,我没有看到任何解释这个的例子或教程。
比如我的客户端有这个代码(保存为index.html):
<!DOCTYPE html>
<html>
<head></head>
<body>
<form method="get" action="generate">
<input type="text" value="8" name="length" />
<button type="submit">Give it now!</button>
</form>
</body>
</html>
我的服务器端是:
import random
import string
import cherrypy
class StringGenerator(object):
@cherrypy.expose
def index(self):
return open("index.html")
@cherrypy.expose
def generate(self, length=8):
ranNum = ''.join(random.sample(string.hexdigits, int(length)))
return ranNum
if __name__ == '__main__':
cherrypy.quickstart(StringGenerator())
所以当我提交表单时,服务器端的generate()函数将被调用,它将我提交的值作为参数。但是我不希望网页像现在这样只显示 return 值,我希望服务器将 return 值发送回客户端(html 和 js)这样我就可以在我的客户端代码中使用它。我该怎么做?
好的,这是怎么回事...当您使用表单时,不需要 js。表单只是将数据发布或发送到 cherrypy 处理程序。你想要做的是使用 js 或 jquery...
<form method="get" action="generate();">
</form>
<script>function generate() {
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.open("POST","generate",true);
xmlhttp.send();
// your response will be here.
xmlDoc=xmlhttp.responseXML;
};</script>
如果这没有意义,请告诉我。
安德鲁
我是网络开发的新手,正在学习使用 CherryPy 作为网络服务的后端。我正在按照这个 tutorial 将请求从客户端发送到服务器(我想知道是否还有其他方法?)。使用 cherrypy 在 python 中编写的服务器然后处理请求并且应该 return 一个值(变量)到客户端(html 和 js),这就是我被卡住的地方。服务器如何将return变量返回给客户端?我很困惑,我没有看到任何解释这个的例子或教程。
比如我的客户端有这个代码(保存为index.html):
<!DOCTYPE html>
<html>
<head></head>
<body>
<form method="get" action="generate">
<input type="text" value="8" name="length" />
<button type="submit">Give it now!</button>
</form>
</body>
</html>
我的服务器端是:
import random
import string
import cherrypy
class StringGenerator(object):
@cherrypy.expose
def index(self):
return open("index.html")
@cherrypy.expose
def generate(self, length=8):
ranNum = ''.join(random.sample(string.hexdigits, int(length)))
return ranNum
if __name__ == '__main__':
cherrypy.quickstart(StringGenerator())
所以当我提交表单时,服务器端的generate()函数将被调用,它将我提交的值作为参数。但是我不希望网页像现在这样只显示 return 值,我希望服务器将 return 值发送回客户端(html 和 js)这样我就可以在我的客户端代码中使用它。我该怎么做?
好的,这是怎么回事...当您使用表单时,不需要 js。表单只是将数据发布或发送到 cherrypy 处理程序。你想要做的是使用 js 或 jquery...
<form method="get" action="generate();">
</form>
<script>function generate() {
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.open("POST","generate",true);
xmlhttp.send();
// your response will be here.
xmlDoc=xmlhttp.responseXML;
};</script>
如果这没有意义,请告诉我。
安德鲁