source: Dev/branches/rest-dojo-ui/client/dojo/rpc/JsonpService.js @ 256

Last change on this file since 256 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

File size: 1.9 KB
Line 
1define(["../main", "./RpcService", "../io/script"], function(dojo) {
2        // module:
3        //              dojo/rpc/JsonpService
4        // summary:
5        //              TODOC
6
7
8dojo.declare("dojo.rpc.JsonpService", dojo.rpc.RpcService, {
9        // summary:
10        //      Generic JSONP service.  Minimally extends RpcService to allow
11        //      easy definition of nearly any JSONP style service. Example
12        //      SMD files exist in dojox.data
13
14        constructor: function(args, requiredArgs){
15                if(this.required) {
16                        if(requiredArgs){
17                                dojo.mixin(this.required, requiredArgs);
18                        }
19
20                        dojo.forEach(this.required, function(req){
21                                if(req=="" || req==undefined){
22                                        throw new Error("Required Service Argument not found: "+req);
23                                }
24                        });
25                }
26        },
27
28        strictArgChecks: false,
29
30        bind: function(method, parameters, deferredRequestHandler, url){
31                //summary:
32                //              JSONP bind method. Takes remote method, parameters,
33                //              deferred, and a url, calls createRequest to make a JSON-RPC
34                //              envelope and passes that off with bind.
35                //      method: string
36                //              The name of the method we are calling
37                //      parameters: array
38                //              The parameters we are passing off to the method
39                //      deferredRequestHandler: deferred
40                //              The Deferred object for this particular request
41
42                var def = dojo.io.script.get({
43                        url: url||this.serviceUrl,
44                        callbackParamName: this.callbackParamName||"callback",
45                        content: this.createRequest(parameters),
46                        timeout: this.timeout,
47                        handleAs: "json",
48                        preventCache: true
49                });
50                def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler));
51        },
52
53        createRequest: function(parameters){
54                // summary:
55                //      create a JSONP req
56                //      params: array
57                //              The array of parameters for this request;
58
59                var params = (dojo.isArrayLike(parameters) && parameters.length==1) ?
60                                parameters[0] : {};
61                dojo.mixin(params,this.required);
62                return params;
63        }
64});
65
66return dojo.rpc.JsonpService;
67});
Note: See TracBrowser for help on using the repository browser.