2

从网页或 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 示例有人可以指向我,它向服务器发送请求并从该服务器获取一些数据?

谢谢!

4

1 回答 1

2

它几乎不会以这种方式工作:client.my_awesome_remote_function. js 没有像__callphp 那样的魔法。此外,远程调用在 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;
});

您可以轻松找到有关该调用的教程。只需谷歌“ajax教程”。例如:http ://www.w3schools.com/ajax/ajax_intro.asp (虽然 w3schools 不是最好的网站,而且在一些细节上有错误,但它仍然适合初学者)。

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

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

于 2012-04-04T07:52:07.090 回答