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
| // XHR.js
//==============================================================================
function getXHR () {
var xhr = null;
// IE 7 et supérieur, autres navigateurs
if (window.XMLHttpRequest) xhr = new XMLHttpRequest();
// IE 6 et inférieur
else if (window.ActiveXObject) {
try { xhr = new ActiveXObject("Msxml2.XMLHTTP") }
catch (exception1) {
try { xhr = new ActiveXObject("Microsoft.XMLHTTP") }
catch (exception2) {}
}
}
// Erreur ou navigateur non pris en charge
if (xhr == null)
alert ("Une erreur s'est produite : "+
"AJAX n'est peut-être pas pris en charge par votre navigateur");
// Renvoi de l'objet
return xhr;
}
//==============================================================================
/*
Fontion ajax() :
- Instancie un objet XMLHttpRequest
- Envoie une requete GET ou POST
- Retourne XMLHttpRequest.responseText
Arguments :
- method : 'GET' ou 'POST'
- url : URL du fichier à appeler
- param : paramètres éventuels
- async : TRUE par défaut, pour mode asynchrone
- content_type : 'application/x-www-form-urlencoded' par défaut, 'data' ou
'multipart/form-data' à préciser pour l'envoi de données non ASCII, binaires
ou de grandes tailles
*/
function ajax(
method, url, param = null,
async = true,
content_type = "application/x-www-form-urlencoded") {
// Objet XMLHttpRequest
var xhr = getXHR();
// Configuration selon méthode GET ou POST
if (method.toUpperCase() == "GET") {
// GET
if (param != null) url = url + "?" + param;
xhr.open('GET',url,async); // 'true' pour mode asynchrone
}
else {
// POST
xhr.open('POST',url,async); // 'true' pour mode asynchrone
if (content_type == 'data') {
content_type = 'multipart/form-data';
}
xhr.setRequestHeader("Content-Type",content_type);
}
// Envoi
xhr.send(param);
// Réception
if (async) {
xhr.onReadyStateChange = function () {
if ( readyState == 4) {
return get_responseText(xhr);
}
}
}
else {
return get_responseText(xhr);
}
}
//==============================================================================
function get_responseText(xhr) {
if (xhr.status == 200) return xhr.responseText;
else return 'Erreur';
} |
Partager