Blame | Last modification | View Log | RSS feed
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 methodvar 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 requestvar 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 serverif(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;}});}