1 if(!dojo._hasResource["dojo.rpc.JsonpService"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
2 dojo._hasResource["dojo.rpc.JsonpService"] = true;
3 dojo.provide("dojo.rpc.JsonpService");
4 dojo.require("dojo.rpc.RpcService");
5 dojo.require("dojo.io.script");
7 dojo.declare("dojo.rpc.JsonpService", dojo.rpc.RpcService, {
9 // Generic JSONP service. Minimally extends RpcService to allow
10 // easy definition of nearly any JSONP style service. Example
11 // SMD files exist in dojox.data
13 constructor: function(args, requiredArgs){
16 dojo.mixin(this.required, requiredArgs);
19 dojo.forEach(this.required, function(req){
20 if(req=="" || req==undefined){
21 throw new Error("Required Service Argument not found: "+req);
27 strictArgChecks: false,
29 bind: function(method, parameters, deferredRequestHandler, url){
31 // JSONP bind method. Takes remote method, parameters,
32 // deferred, and a url, calls createRequest to make a JSON-RPC
33 // envelope and passes that off with bind.
35 // The name of the method we are calling
37 // The parameters we are passing off to the method
38 // deferredRequestHandler: deferred
39 // The Deferred object for this particular request
41 var def = dojo.io.script.get({
42 url: url||this.serviceUrl,
43 callbackParamName: this.callbackParamName||"callback",
44 content: this.createRequest(parameters),
45 timeout: this.timeout,
49 def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler));
52 createRequest: function(parameters){
56 // The array of parameters for this request;
58 var params = (dojo.isArrayLike(parameters) && parameters.length==1) ?
60 dojo.mixin(params,this.required);