]>
git.proxmox.com Git - sencha-touch.git/blob - src/src/direct/JsonProvider.js
2 * @class Ext.direct.JsonProvider
4 * A base provider for communicating using JSON. This is an abstract class
5 * and should not be instanced directly.
9 Ext
.define('Ext.direct.JsonProvider', {
10 extend
: 'Ext.direct.Provider',
12 alias
: 'direct.jsonprovider',
14 uses
: ['Ext.direct.ExceptionEvent'],
17 * Parse the JSON response.
19 * @param {Object} response The XHR response object.
20 * @return {Object} The data in the response.
22 parseResponse: function(response
) {
23 if (!Ext
.isEmpty(response
.responseText
)) {
24 if (Ext
.isObject(response
.responseText
)) {
25 return response
.responseText
;
27 return Ext
.decode(response
.responseText
);
33 * Creates a set of events based on the XHR response.
35 * @param {Object} response The XHR response.
36 * @return {Ext.direct.Event[]} An array of {@link Ext.direct.Event} objects.
38 createEvents: function(response
) {
45 data
= this.parseResponse(response
);
47 event
= Ext
.create('Ext.direct.ExceptionEvent', {
50 code
: Ext
.direct
.Manager
.exceptions
.PARSE
,
51 message
: 'Error parsing json response: \n\n ' + data
56 if (Ext
.isArray(data
)) {
57 for (ln
= data
.length
; i
< ln
; ++i
) {
58 events
.push(this.createEvent(data
[i
]));
61 events
.push(this.createEvent(data
));
67 * Create an event from a response object.
68 * @param {Object} response The XHR response object.
69 * @return {Ext.direct.Event} The event.
71 createEvent: function(response
) {
72 return Ext
.create('direct.' + response
.type
, response
);