2015-09-10 2 views
0

Я новичок в веб-разработке, и я изучаю использование CherryPy в качестве бэкэнда для веб-сервиса. Я следил за этим tutorial для отправки запросов от клиента на сервер (интересно, есть ли другой способ?). Сервер, который написан на python с использованием cherrypy, затем обрабатывает запросы и должен возвращать значение (переменную) клиенту (html и js), вот где я застрял. Как сервер может вернуть переменную обратно клиенту? Я довольно смущен, и я не вижу ни одного примера или учебника, объясняющего это.сервер возвращает значение клиенту в CherryPy

Например, мой клиент сторона имеет этот код (сохраненный как 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()) 

поэтому, когда я отправить форму, генерировать() функция на стороне сервера будет вызываться, и она примет значение, которое я представил в качестве параметра. Но я не хочу, чтобы веб-страница просто отображала возвращаемое значение, как сейчас, я хочу, чтобы сервер отправил возвращаемое значение обратно клиенту (html и js), чтобы я мог использовать его в своем клиентском коде. Как я могу это сделать?

ответ

0

Хорошо, вот что случилось ... когда вы используете форму, нет необходимости в js. Форма просто отправляет или отправляет данные обработчику черри. Что вы хотите сделать что-то вроде этого либо с 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> 

Позвольте мне знать, если это не имеет смысла.

Andrew

 Смежные вопросы

  • Нет связанных вопросов^_^