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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| /*
* ajax.js : script permettant d'employer la "Technologie AJAX"
* Ce fichier est à inclure dans le HEAD de la page qui l'utilisera.
*
* Auteur : Jean Charbonneau ( avec divers et variés copié/collé )
* Date : 28/06/2005
*
* Description :
* AJAX est un nom barbare pour désigner une utilisation conjointe de plusieurs technos, qui sont :
* Javascript, HTTP et DOM/XML. Javascript envoie une requête, et la page ayant fait cet appel reçoit de
* manière asynchrone les résultats correspondants.
*
* Le but et de permettre par le biais de Javascript, et notamment de l'objet XMLHttpRequest, d'accèder à
* une page distante sans reloader la page actuelle. Le contenu de la page distante est alors retourné à la
* page initiale sous la forme d'un objet XML ou d'une chaine String, cette page pouvant donc
* se servir pour raffraichir une zone texte, une liste, ou tout ce que l'imagination peut suggérer.
*
* Limitation : il est impossible d'utiliser directement XMLHttpRequest pour obtenir le contenu
* d'une page se situant ailleurs que sur le même serveur.
* Pour contourner ce problème, il est possible d'utiliser une page "intermediaire"
* qui irait chercher les données à distance, cette page se situant elle sur le même
* serveur que le XMLHttpRequest.
*
*/
// La variable contenant la requête
var req;
// Test pour le cas où il n'y a pas de DOMParser disponible ( IE )
if (typeof DOMParser == "undefined") {
DOMParser = function () {}
DOMParser.prototype.parseFromString = function (str, contentType) {
if (typeof ActiveXObject != "undefined") {
var d = new ActiveXObject("MSXML.DomDocument");
d.loadXML(str);
return d;
} else if (typeof XMLHttpRequest != "undefined") {
var req = new XMLHttpRequest;
req.open("GET", "data:" + (contentType || "application/xml") +
";charset=utf-8," + encodeURIComponent(str), false);
if (req.overrideMimeType) {
req.overrideMimeType(contentType);
}
req.send(null);
return req.responseXML;
}
}
}
var domParser = new DOMParser();
// Dans le cas de mozilla (firefox) il est necessaire de définir ce privilège.
try {
if(netscape != undefined)
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch(e) { };
// Fonction de base, permettant l'accès au contenu de pages sur le même serveur.
function loadDatas(url)
{
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}
// Fonction permettant l'accès au contenu de pages extérieures, même avec proxy; necessite le fichier ajax.php
function loadDatasOutside(url,proxyserver,proxyport,proxyuser,proxypassword)
{
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", "ajax.php?outsideurl=" + encodeURI(url) + "&proxyserver=" + proxyserver + "&proxyport=" + proxyport + "&proxyuser=" + proxyuser + "&proxypassword=" + proxypassword , true);
req.send(null);
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", "ajax.php?outsideurl=" + encodeURI(url) + "&proxyserver=" + proxyserver + "&proxyport=" + proxyport + "&proxyuser=" + proxyuser + "&proxypassword=" + proxypassword , true);
req.send();
}
}
}
// Traitement asynchrone du résultat de la requête.
function processReqChange()
{
// only if req shows "complete"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
var xmltext = req.responseText;
var xmlobject = domParser.parseFromString(xmltext, "text/xml");
processDatas(xmlobject,xmltext); // fonction de la page appellante
} else {
alert("There was a problem retrieving the XML data:\n" + req.statusText);
}
}
} |
Partager