--allow-file-access-from-files
var xhr=null;
if (window.ActiveXObject) xhr = new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest) xhr = new XMLHttpRequest();
xhr.open("GET", "data.xml?nocache=" + Math.random(), true);
xhr = new XMLHttpRequest();
xhr.open('GET', 'reponse_ajax.txt', false); //false=synchrone
xhr.send();
alert(xhr.responseText);
var xhr= new XMLHttpRequest();
xhr.open('GET', 'reponse_ajax.txt', true); //true=asynchrone
xhr.onload=function () {alert(this.responseText)} //callback en xhr2. Pour xhr voir exemple utilisant onreadystatechange
xhr.send();
Exemple simple
Autres exemples
var xhr; // objet XmlHttpRequest
var mode; // true (asynchrone) ou false (synchrone)
var params = "p1=v1&p2=v2" // paramètres de la requête
// appel avec la méthode GET avec paramètres
xhr.open("GET", urlServeur + "?" + params, mode);
xhr.send(null);
// appel avec la méthode POST avec paramètres
xhr.open("POST", urlServeur, mode);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(params);
| attribut | description |
|---|---|
| xhr.responseText | Contient les données chargées, au fur et à mesure, sous forme de chaine de caractères. Elle est complètement remplie quand l'état vaut 4. |
| xhr.responseXML | Contient un fichier XML chargé, et les méthodes de DOM permettront d'en extraire les données. Elle est assignée seulement au moment ou l'état est 4, et vaut null avant. |
| xhr.response* | utilisé pour type 'arraybuffer' |
| xhr.responseType* | Définir en 'arraybuffer' pour chargement de donnée binaire. Autres types existant: "blob", "document", "json", et "text". |
| xhr.onload* | invoqué quand chargement terminé. Définir avant appel de xhr.send(). Passe xhr en paramètre de la fonction callback.
|
| xhr.onreadystatechange | invoqué quand readyState est assigné |
| xhr.readyState | Le code change successivement de valeur jusqu'à ce que le serveur soit prêt de, passant de 0 à 4.
xhr.onreadystatechange = function() {
retour="readyState="+xhr.readyState;
if(xhr.readyState == 4)
retour="status code= "+xhr.status+" "+ xhr.statusText;
}
|
| xhr.status | Code retour HTTP. 200 = ok, 404= pas trouvé |
| attribut | description |
|---|---|
| xhr.abort() | stoppe activité |
| xhr.getResponseHeader(nomEntete) | Retourne l'en-tête HTTP des données reçues après la dernière requête. Par exemple, xhr.getResponseHeader("Content-Type")
|
| xhr.getAllResponseHeaders() | Retourne tous les entêtes HTTP sauf Set-Cookie |
| xhr.open(mode, url, asynchrone [,login, password]) | mode: type de requête HTTP, GET, POST, HEAD url: le chemin du fichier. asynchrone: faux → synchrone. |
| xhr.send(param) | param vide avec mode GET |
| setRequestHeader(DOMString, DOMString) | Les arguments sont le nom de l'en-tête et la valeur. Plusieurs valeurs peuvent être envoyées successivement. |
function xhrGet(reqUri, callback, type) {
var caller=xhrGet.caller
var xhr=new XMLHttpRequest
xhr.open("GET",reqUri,true)
if (callback) xhr.load=function(xhr) {
try {callback(xhr)}
catch(e) {throw 'Erreur xhrGet\n URL: '+reqUri+'\nErreur: '+e+'responseText: '+xhr.responseText+'\nCaller: '+caller}
}
if (type) xhr.responseType=type
xhr.send()
}
parseJSON = function (xhr) {
parsedJSON = JSON.parse(xhr.responseText);
x = parsedJSON['frames']['chaingun_impact.png']['spriteSourceSize']['x'];
console.log(x);
return x;
};
xhrGet('/media/js/standalone/libs/gamedev_assets/weapon.json', parseJSON, null);
xhrGet('/media/js/standalone/libs/gamedev_assets/bg_menu.ogg', playSound, 'arraybuffer');
exemple implémentation de xhrGet