Я понял, что проблема заключается в открытии index.html с использованием Firefox «File Open» вместо того, чтобы мой веб-сервер доставлял мне index.html (просмотрев http://localhost:8080)
Вот полный рабочий примервыполнения вызова JSON RPC и отображения результата с помощью простого предупреждения RPC является базовой функцией сложения.
Чтобы увидеть его в действии:
Сохранить индекс.html (2) и webserver.py (1). Отредактируйте webserver.py, чтобы отразить местоположение index.html
Запустите webserver.py (chmod a + x webserver.py. sudo./webserver.py)
Запустите Firefox и перейдите к localhost: 8080. Это загрузит index.html, вызовет вызов ajax () и отобразит результат с помощью предупреждения.
(1) Веб-сервер Tornado, использующий модуль tornadorpc и написанный на Python. Вот он:
#! /usr/bin/python2.6
import tornado.httpserver import tornado.ioloop import tornado.web
from tornadorpc.json import JSONRPCHandler from tornadorpc import private, start_server
class MainHandler(tornado.web.RequestHandler):
def get(self,upath):
self.write( open('/home/travis/EXPLORE/webApps/index.html').read() )
class Tree(object):
def power(self, base, power, modulo=None):
return pow(base, power, modulo)
def _private(self):
# Won't be callable
return False
class Handler(JSONRPCHandler):
print ('In Handler()...')
tree = Tree()
def add(self, x, y):
print ('add() method called...')
return x+y
def ping(self, obj):
return obj
# Order is important here.. first matched handler in array is used !! handlers = [
('/RPC2',Handler),
(r"/(.*)", MainHandler),
]
start_server(handlers, port=8080)
(2) index.html использует jjery ajax ()метод, чтобы сделать вызов JSONRPC к удаленной процедуре добавления. Убедитесь, что вы сохраняете ее в соответствии сПуть, по которому веб-сервер в (1) пытается прочитать его содержимое.
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script>
$(document).ready(function(){
$.ajax({
url: 'http://localhost:8080/RPC2',
data: JSON.stringify ({jsonrpc:'2.0',method:'add', params:[1400,2100],id:"jsonrpc"} ), // id is needed !!
type:"POST",
dataType:"json",
success: function (data) { alert("The result is : " + data.result);},
error: function (err) { alert ("Error");}
});
});
</script>
</head>
<body>
<h1> jQuery JSON RPC 2.0 demo </h1>
</body>
</html>