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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| function isset (variable) {
return (typeof variable != 'undefined' && variable != null);
};
var JkAjaxRequester = Class.create();
JkAjaxRequester.request = function (arguments) {
try {
if (!isset (arguments)) throw ('JkAjaxRequester.request: arguments is null');
if (!isset (arguments.requester)) throw ('JkAjaxRequester.request: No Respons Object');
if (!isset (arguments.ajax_url)) throw ('JkAjaxRequester.request: No Ajax Id');
JkAjaxRequester.ajaxBlinker (true);
return new Ajax.Request (arguments.ajax_url, {
method: 'post',
parameters: (isset (arguments.params) ? arguments.params : {}),
requester: arguments.requester,
timeout: false,
onSuccess: function () {
if (!isset (arguments [0].responseJSON)) {
if (isset (arguments [0].responseText)) arguments [0].responseJSON = arguments [0].responseText.evalJSON (true);
}
if (!isset (arguments [0].responseJSON)) throw ('No answer from the server');
JkAjaxRequester.responsFunction (
new JkAjaxResponder ({
flag: arguments [0].responseJSON.status.flag,
code: arguments [0].responseJSON.status.code,
message: arguments [0].responseJSON.status.message,
returns: arguments [0].responseJSON,
requester: arguments [0].request.options.requester
})
);
},
onFailure: function () {
throw (arguments [0].status + ' ' + arguments [0].statusText);
},
onException: function () {
JkAjaxRequester.responsFunction (
new JkAjaxResponder ({
flag: false,
code: 1,
message: "Error#1: Echec de la requête",
exception: arguments [1],
requester: arguments [0].options.requester
})
);
}
});
} catch (exception) {
JkAjaxRequester.responsFunction (
new JkAjaxResponder ({
flag: false,
code: 2,
message: "Error#2: Echec de la requête",
exception: exception,
requester: arguments.requester
})
);
return null;
}
};
JkAjaxRequester.responsFunction = function (responder) {
JkAjaxRequester.ajaxBlinker (false);
if (isset (responder.requester.responsFunction)) responder.requester.responsFunction (responder);
};
JkAjaxRequester.ajax_timeout = null;
JkAjaxRequester.ajax_requests = 0;
JkAjaxRequester.ajaxBlinker = function (bool) {
JkAjaxRequester.ajax_requests = JkAjaxRequester.ajax_requests + (bool ? 1 : -1);
if (JkAjaxRequester.ajax_requests == 0 || (JkAjaxRequester.ajax_requests == 1 && bool)) {
if (bool) {
JkAjaxRequester.ajax_timeout = setTimeout ("document.body.className = 'loading';", 200);
} else {
clearTimeout (JkAjaxRequester.ajax_timeout);
document.body.className = '';
}
}
};
var JkAjaxResponder = Class.create ({
initialize: function (arguments) {
if (!isset (arguments)) throw ('JkAjaxResponder.initialize: arguments is null');
this.flag = isset (arguments.flag) && arguments.flag == true;
this.code = isset (arguments.code) ? arguments.code : -1;
this.message = isset (arguments.message) ? arguments.message : "";
this.exception = isset (arguments.exception) ? arguments.exception : null;
this.returns = isset (arguments.returns) ? arguments.returns : null;
this.requester = isset (arguments.requester) ? arguments.requester : null;
},
toString: function () {
str = 'Object (JkAjaxResponder) : {';
str += isset (this.flag) ? 'flag:'+this.flag+';' : '';
str += isset (this.code) ? 'code:'+this.code+';' : '';
str += isset (this.message) ? 'message:'+this.message+';' : '';
str += isset (this.exception) ? 'exception:'+this.exception+';' : '';
str += isset (this.returns) ? 'returns:'+this.returns+';' : '';
str += isset (this.requester) ? 'requester:'+this.requester.toString()+';' : '';
str += '}';
return str;
}
}); |
Partager