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