Subversion Repositories Applications.papyrus

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2150 mathias 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");
6
 
7
dojo.declare("dojo.rpc.JsonpService", dojo.rpc.RpcService, {
8
	// summary:
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
12
 
13
	constructor: function(args, requiredArgs){
14
		if(this.required) {
15
			if(requiredArgs){
16
				dojo.mixin(this.required, requiredArgs);
17
			}
18
 
19
			dojo.forEach(this.required, function(req){
20
				if(req=="" || req==undefined){
21
					throw new Error("Required Service Argument not found: "+req);
22
				}
23
			});
24
		}
25
	},
26
 
27
	strictArgChecks: false,
28
 
29
	bind: function(method, parameters, deferredRequestHandler, url){
30
		//summary:
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.
34
		//      method: string
35
		//              The name of the method we are calling
36
		//      parameters: array
37
		//              The parameters we are passing off to the method
38
		//      deferredRequestHandler: deferred
39
		//              The Deferred object for this particular request
40
 
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,
46
			handleAs: "json",
47
			preventCache: true
48
		});
49
		def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler));
50
	},
51
 
52
	createRequest: function(parameters){
53
		// summary:
54
		//      create a JSONP req
55
		//      params: array
56
		//              The array of parameters for this request;
57
 
58
		var params = (dojo.isArrayLike(parameters) && parameters.length==1) ?
59
				parameters[0] : {};
60
		dojo.mixin(params,this.required);
61
		return params;
62
	}
63
});
64
 
65
}