JavaScript
клиент отправляет запрос следующим образом:
$.ajax({
url: 'http://localhost:7973/test',
type: 'GET',
data: {'host': 'mike', 'guests': {'name': ['car', 'ball'], 'age': [6, 10, 7]}},
success: function(result){alert(result)},
error: function(error){alert(error)}
});
Python
запрос на обработку сервером с использованием tornado
:
import tornado.ioloop
import tornado.web
class TestHandler(tornado.web.RequestHandler):
def get(self):
host = self.get_argument('host')
print(host)
guests = self.get_argument('guests')
print(guests)
def make_app():
return tornado.web.Application([
(r'/test', TestHandler)
])
if __name__ == "__main__":
app = make_app()
port = 7973
app.listen(port)
print('-' * 100)
print('server started, listening to ', port, '...\n')
tornado.ioloop.IOLoop.current().start()
Выходные данные на стороне сервера указаны ниже,По-видимому, аргумент 'host' успешно получен, но я понятия не имею, как получить аргумент, значением которого является сам сложный объект (скажем, массив или словарь).Пожалуйста, объясните мне механизм этих приведений и дампов между структурами данных и их строковым представлением?Я прочитал документ tornado , но не смог найти ответ.
mike
ПРЕДУПРЕЖДЕНИЕ: tornado.general: 400 GET / test?хост = микрофон и гости% 5Bname% 5D% 5B% 5D = автомобиль и гости% 5Bname% 5D% 5B% 5D = шарик и гости% 5Bage% 5D% 5B% 5D = 6 & гости% 5Bage% 5D% 5B% 5D = 10 & гости% 5Bage% 5D% 5B%5D = 7 (:: 1): пропущенные аргументы: гости
ВНИМАНИЕ: tornado.access: 400 GET / test? Host = mike & guest% 5Bname% 5D% 5B% 5D = машина и гости% 5Bname% 5D% 5B% 5D= мяч и гости% 5Bage% 5D% 5B% 5D = 6 и гости% 5Bage% 5D% 5B% 5D = 10 и гости% 5Bage% 5D% 5B% 5D = 7 (:: 1) 1,99 мс