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

标签 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 示例,它向服务器发送请求并从该服务器获取一些数据?

谢谢!

最佳答案

它几乎不会以这种方式工作: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/

相关文章:

php - Slim 框架无法使用 protected 变量编码为 json

javascript - 使用本地存储从表单发布和获取数据

javascript - 从 javascript 数组中获取 Json 对象

php - 虚拟主机在 ubuntu LAMP 堆栈中无法正常工作

php - 在 WooCommerce 页面上显示创建和修改的产品日期

javascript - 具有命名函数的 window.removeEventListener 不起作用

javascript - 在 Node.js 下存储 JSON 的简单方法

ios - 在 Objective-C 中使用 JSON 中的 webService

java - 如何解决基本POST请求的java.lang.IllegalStateException : Already connected

php - 如何从WordPress中删除p标签