Pman.Request.js
[Pman.Core] / Pman.Request.js
1 //<script type="text/javascript">
2 /**
3 * @class Pman.Request
4 * Handles generic requests  - an extension of Roo.data.Connection that runs the request
5 * on construction. shows error messages, and parses results.
6 * Usage:
7 <pre><code>
8 var t = new Pman.Request({
9     url: baseURL + '/Images/Download/0/myfile.jpg',
10     params: { .... },
11     success : function(res) {
12         Roo.log(res.data);
13         Roo.log(res.total);
14         ....
15     } 
16 });
17
18 </code></pre>
19
20 * @constructor
21 * @param {Object} cfg   Configuration object.
22 * @cfg {String} url     Location to download from.
23 * @cfg {String} method     GET or POST (default GET), POST will create a form, and post that into the hidden frame.
24 * @cfg  {Object/String/Function} params (Optional) An object containing properties which are used as parameters to the
25 *       request, a url encoded string or a function to call to get either.
26 * @cfg  {Function} success  called with ( JSON decoded data of the data.. )
27 * @cfg  {Function} success  called with ( JSON decoded data of the data.. )
28 */
29
30 Pman.Request = function(config){
31     
32     Pman.Request.superclass.constructor.call(this, config);
33     this.request(config);
34 }
35
36 Roo.extend(Pman.Request, Roo.data.Connection, {
37     // private
38     processResponse : function(response) {
39         // convert the Roo Connection response into JSON data.
40         
41         var res = '';
42         try {
43             res = Roo.decode(response.responseText);
44             // oops...
45             if (typeof(res) != 'object') {
46                 res = { success : false, errorMsg : res, errors : true };
47             }
48             if (typeof(res.success) == 'undefined') {
49                 res.success = false;
50             }
51             
52         } catch(e) {
53             res = { success : false,  errorMsg : response.responseText || Roo.encode(response), errors : true };
54         }
55         Roo.log(response.responseText);
56         if (!res.errorMsg) {
57             res .errorMsg = Roo.encode(response);
58         }
59         return res;
60     },
61     
62     handleResponse : function(response){
63        this.transId = false;
64        var options = response.argument.options;
65        response.argument = options ? options.argument : null;
66        this.fireEvent("requestcomplete", this, response, options);
67        
68         var res = this.processResponse(response);
69                 
70         if (!res.success) { // error!
71             if (options.failure) {
72                 // failure is handled... - do not show error..
73                 if (true === Roo.callback(options.failure, options.scope, [res, options])) {
74                     return;
75                 }
76             }
77             Roo.MessageBox.hide(); // hide any existing messages..
78             Roo.MessageBox.alert("Error", res.errorMsg ? res.errorMsg : "Error Sending");
79             return;
80         }
81         Roo.callback(options.success, options.scope, [res, options]);
82         
83     },
84     handleFailure : function(response, e){
85         this.transId = false;
86         var options = response.argument.options;
87         response.argument = options ? options.argument : null;
88         this.fireEvent("requestexception", this, response, options, e);
89         var res = Roo.callback(options.failure, options.scope, [response, options]);
90         
91         if (res !== true) {
92             var decode = this.processResponse(response);
93                 
94             Roo.MessageBox.hide(); // hide any existing messages..
95             Roo.MessageBox.alert("Error", "Error Sending" + decode.errorMsg);
96         }
97     }
98 });