Rev 1422 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*Copyright (c) 2004-2006, The Dojo FoundationAll Rights Reserved.Licensed under the Academic Free License version 2.1 or above OR themodified BSD license. For more information on Dojo licensing, see:http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.rpc.JsonService");dojo.require("dojo.rpc.RpcService");dojo.require("dojo.io.*");dojo.require("dojo.json");dojo.require("dojo.lang.common");dojo.rpc.JsonService = function (args) {if (args) {if (dojo.lang.isString(args)) {this.connect(args);} else {if (args["smdUrl"]) {this.connect(args.smdUrl);}if (args["smdStr"]) {this.processSmd(dj_eval("(" + args.smdStr + ")"));}if (args["smdObj"]) {this.processSmd(args.smdObj);}if (args["serviceUrl"]) {this.serviceUrl = args.serviceUrl;}if (typeof args["strictArgChecks"] != "undefined") {this.strictArgChecks = args.strictArgChecks;}}}};dojo.inherits(dojo.rpc.JsonService, dojo.rpc.RpcService);dojo.extend(dojo.rpc.JsonService, {bustCache:false, contentType:"application/json-rpc", lastSubmissionId:0, callRemote:function (method, params) {var deferred = new dojo.Deferred();this.bind(method, params, deferred);return deferred;}, bind:function (method, parameters, deferredRequestHandler, url) {dojo.io.bind({url:url || this.serviceUrl, postContent:this.createRequest(method, parameters), method:"POST", contentType:this.contentType, mimetype:"text/json", load:this.resultCallback(deferredRequestHandler), error:this.errorCallback(deferredRequestHandler), preventCache:this.bustCache});}, createRequest:function (method, params) {var req = {"params":params, "method":method, "id":++this.lastSubmissionId};var data = dojo.json.serialize(req);dojo.debug("JsonService: JSON-RPC Request: " + data);return data;}, parseResults:function (obj) {if (!obj) {return;}if (obj["Result"] != null) {return obj["Result"];} else {if (obj["result"] != null) {return obj["result"];} else {if (obj["ResultSet"]) {return obj["ResultSet"];} else {return obj;}}}}});