XmlHttpRequest() enhanced
By Geoffrey on Saturday 3 December 2005, 12:11 - Coding - Permalink
Je l'avais dit, voici la version améliorée de ma petite fonction XmlHttpRequest() en Javascript.
Beaucoup plus complète, on peut passer les arguments suivants via l'objet conf:
method: POST ou GET (défaut: POST)url: baheu... :) (défaut: url du document en cours)data: le corps de la requête (pour les POST) (défaut: null)callback: la fonction de callback (défaut: function() {})forceXML: sitrue, override le mimetype de la réponse (ne fonctionne pas sous IE) (défaut: false)isForm: sitrue, envoit le bon Content-Type pour une requête POST de type formulaire (défaut: false)headers: objet contenant les headers a envoyer viasetRequestHeader(optionel)
En gros, tous les arguments sont optionnels :)
var xmlhttp = false; function xmlHttpRequest(conf) { var method = conf.method ? conf.method : 'POST'; var url = conf.url ? conf.url : document.location.toString(); var data = conf.data ? conf.data : null; var callback = conf.callback ? conf.callback : function() {}; var forceXML = conf.forceXML ? conf.forceXML : false; var isForm = conf.isForm ? conf.isForm : false; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { callback(data); } } xmlhttp.open(method, url); if (conf.headers) { for (i in conf.headers) { xmlhttp.setRequestHeader(i, conf.headers[i]); } } if (forceXML && typeof(xmlhttp.overrideMimeType) != 'undefined') { xmlhttp.overrideMimeType('text/xml'); } if (isForm) { xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); } xmlhttp.send(data); }
Comments
Question con : comment tu passes un multipart/form-data ? Normalement, ou en utilisant la méthode setRequestHeader ?
hum, j'avais pas pensé a ce header tiens, mais on peut le passer via setRequestHeader avec l'argument "headers" :-)
qu'est-ce que tu entends par "normalement" ?
> qu'est-ce que tu entends par "normalement" ?
Oui, je m'étais mal exprimé. Y'a pas de normalement. On est obligé de déclarer les entêtes :)