使JSON-RPC jQuery插件与GAE ProtoRPC一起使用

时间:2011-04-29 08:40:06

标签: javascript jquery google-app-engine json-rpc protorpc

我正在尝试让这两个库协同工作。但我不确定他们是否可以开箱即用。在使用JSON-RPC插件之前,我使用标准$.ajax功能成功完成了它。能不能给我一些关于客户端功能应该如何看的简短示例,以及GAE方面的切入点。

或者也许应该创建一个特殊的ProtoRPC jQuery库来轻松实现这项工作?

JSON-RPC plugin homepage

3 个答案:

答案 0 :(得分:5)

ProtoRPC不使用JSON-RPC消息格式。它使用更简单的格式,其中每个API方法都提供自己的端点,而不是一个端点将方法名称作为请求字典的一部分。

以下是他们为$.ajax提供的示例:

$.ajax({url: '/hello.hello',
          type: 'POST',
          contentType: 'application/json',
          data: '{ my_name: Bob }',
          dataType: 'json',
          success: function(response) {
            // The response is { hello: "Hello there, Bob!" }
            alert(response.hello);
          }
         });

你真的需要一个特殊的jQuery库吗?我不确定它会变得简单得多。

答案 1 :(得分:3)

我们当然需要为用户开发通用的protorpc库。在那之后,最好编写一个与它一起使用的jquery插件。

我实际上想过为ProtoRPC提供一种方法来支持JSON-RPC作为一个单独的协议,但是JSON-RPC可能会有一些使它与ProtoRPC不兼容的东西。两件事:

  • JSON请求允许在其参数中包含任意类型的列表。 ProtoRPC采用一种定义良好的类型。

  • JSON字段和列表可能包含任意类型。 ProtoRPC字段和列表只能包含一种类型。

我希望我有更好的答案。

答案 2 :(得分:0)

我正在研究同样的想法,并发布了类似的问题here

我发现如果你的请求有ContentType application / json,ProtoRPC会给出一个JSON响应,如果你包含ajaxGridOptions,jqGrid会生成这个:{contentType:'application / json; charset = utf-8'},在您的网格选项中,但仍然存在ProtoRPC只接受一个明确定义的参数的问题,而jqGrid默认尝试上传5个左右的url格式参数,即使您将其设置为POST而不是GET。

我目前正在尝试使用grid.postext.js插件来解决这个问题,到目前为止还没有成功。