从网页或 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 示例,它向服务器发送请求并从该服务器获取一些数据?
谢谢!
最佳答案
它几乎不会以这种方式工作:client.my_awesome_remote_function
。 js 中没有像 php 中的 __call
这样的魔法。远程调用也是在 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 控件。
同步运行这些请求是可能的,但从用户体验的 Angular 来看,这被认为是非常糟糕的。此外,无论如何您都需要处理回调的概念。
关于php - 使用 JavaScript 进行 RPC(远程过程调用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006799/