12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojo.rpc.JsonService"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojo.rpc.JsonService"] = true;
- dojo.provide("dojo.rpc.JsonService");
- dojo.require("dojo.rpc.RpcService");
- dojo.declare("dojo.rpc.JsonService", dojo.rpc.RpcService, {
- bustCache: false,
- contentType: "application/json-rpc",
- lastSubmissionId: 0,
- callRemote: function(method, params){
- // summary:
- // call an arbitrary remote method without requiring it to be
- // predefined with SMD
- // method: string
- // the name of the remote method you want to call.
- // params: array
- // array of parameters to pass to method
- var deferred = new dojo.Deferred();
- this.bind(method, params, deferred);
- return deferred;
- },
- bind: function(method, parameters, deferredRequestHandler, url){
- //summary:
- // JSON-RPC bind method. Takes remote method, parameters,
- // deferred, and a url, calls createRequest to make a JSON-RPC
- // envelope and passes that off with bind.
- // method: string
- // The name of the method we are calling
- // parameters: array
- // The parameters we are passing off to the method
- // deferredRequestHandler: deferred
- // The Deferred object for this particular request
- var def = dojo.rawXhrPost({
- url: url||this.serviceUrl,
- postData: this.createRequest(method, parameters),
- contentType: this.contentType,
- timeout: this.timeout,
- handleAs: "json-comment-optional"
- });
- def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler));
- },
- createRequest: function(method, params){
- // summary:
- // create a JSON-RPC envelope for the request
- // method: string
- // The name of the method we are creating the requst for
- // params: array
- // The array of parameters for this request;
-
- var req = { "params": params, "method": method, "id": ++this.lastSubmissionId };
- var data = dojo.toJson(req);
- return data;
- },
- parseResults: function(/*anything*/obj){
- //summary:
- // parse the result envelope and pass the results back to
- // the callback function
- // obj: Object
- // Object containing envelope of data we recieve from the server
- if(dojo.isObject(obj)){
- if("result" in obj){
- return obj.result;
- }
- if("Result" in obj){
- return obj.Result;
- }
- if("ResultSet" in obj){
- return obj.ResultSet;
- }
- }
- return obj;
- }
- }
- );
- }
|