使用JavaScript进行RPC(远程过程调用)

时间:2012-04-04 07:36:06

标签: php javascript json xmlhttprequest rpc

从网页或JavaScript代码执行RPC(远程过程调用)的最佳方法是什么?如果可能的话我想用JavaScript保存它,以便我可以对网页进行实时更新,而不必在PHP中执行任何操作,以防我的服务器出现故障我仍然希望JavaScript处理页面更新...甚至可能发送请求到一个在本地运行的python shell脚本......这是合法的JavaScript吗?

我更喜欢让远程机器处理请求。我看到很多关于XMLRPC或JSONRPC如何做到这一点的讨论,但我没有看到任何好的例子。我想微软建议使用他们的XMLhttprequest,但我没有看到任何不使用他们的ActiveX调用或需要特殊代码的Internet Explorer ...我只是想要一些简单的方法将命令传递给某些python / ruby​​ / c ++来自网页的代码。

Python服务器代码(等待RPC请求):

import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
def my_awesome_remote_function(str):
    return str + "awesome"
server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
server.register_function(is_even, "is_even")
server.serve_forever()

示例JavaScript代码:

var client = rpc.server("http://localhost:8000/");
var my_local_variable = client.my_awesome_remote_function(param);

有没有一个好的JSON / JavaScript示例,有人可以指示我向服务器发送请求并从该服务器获取一些数据?

谢谢!

1 个答案:

答案 0 :(得分:1)

几乎不会这样:client.my_awesome_remote_function。像php中的__call这样的js没有魔力。远程调用也是在js中完成的,主要是异步使用回调函数 - 在完成某个任务后调用的函数。

var client = rpc.server("http://localhost:8000/");
var my_local_variable;
client.rpc('my_awesome_remote_function', [param], function(result) {
    my_local_variable = result;
});

您可以轻松找到有关该通话的教程。只是google“ajax教程”。 例如:http://www.w3schools.com/ajax/ajax_intro.asp(虽然w3schools不是最好的网站,但在某些细节方面有错误,但它对初学者来说仍然有用)。

所有ajax实现都使用现代的XMLHttpRequest和ActiveX控件来支持旧的IE。

可以同步运行这些请求,但从用户体验的角度来看,这被认为非常糟糕。此外,无论如何,您还需要处理回调的概念。