| /* |
| Copyright (c) 2004-2006, The Dojo Foundation |
| All Rights Reserved. |
| |
| Licensed under the Academic Free License version 2.1 or above OR the |
| modified 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; |
| } |
| } |
| } |
| }}); |
| |