Soyez le premier à donner votre avis sur cette source.
Vue 10 872 fois - Téléchargée 836 fois
<?php ////////////////////////////////////////////////////////////////////////////////////// // Author : Michel Stockman // Date : 22/06/2007 // Description : Outils pour les requettes HTTP directement depuis le client AJAX ////////////////////////////////////////////////////////////////////////////////////// // On signale au système de stoker les sortie standard pour ne // rien envoyer au client ob_start(); // Obligatoire sinon ne fonctionne pas function majax_return($text) { // Permet une convertion pour le flux de retour de appel xmlhttprequest ob_clean(); // Vide la sortie standard $text=str_replace("’","'",$text); $text=str_replace("‘","'",$text); $text=str_replace("–","-",$text); $text=str_replace("","",$text); echo base64_encode($text); // Code le code à renvoyer en base64 ob_flush(); // Envoie le code en retour die; // Arrêt l'exécution } /////////////////////////////////////////////// // Partie javascript /////////////////////////////////////////////// ?> <script language="javascript"> ///////////////////////////////////////////////// // Fonction de gestion AJAX HTTP Request ////////////////////////////////////////////////// var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // Décodage d'une chaine en base64 pour restitution HTML Normal // Pour convertir le retour de XMLHttpRequest function majax64(input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; // remove all characters that are not A-Z, a-z, 0-9, +, /, or = input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); do { enc1 = keyStr.indexOf(input.charAt(i++)); enc2 = keyStr.indexOf(input.charAt(i++)); enc3 = keyStr.indexOf(input.charAt(i++)); enc4 = keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } while (i < input.length); return output; } //#################################################################################################### function majax_request(page, param, callback) { /////////////////////////////////////////////////////////////////////////// // Envoie un request HTTP sur une page, en lui passent les paramètre // en méthode POST et en retournant le résultat dans ... // soit une div si on donne son nom en paramètre et entre quote // soit une fonction si on donne son nom sans les quotes // Parametre ////////////////////////////////////////////////////////////// // page = nom de la page pour recevoir le request exemple : "test.php" // param = les parametre à passer exemple : "id=5&type=content&auto=1" comme dans un URL // callback = l'id de la <div> qui vas contenir le code de retour ou la fonction // qui doit être appelée avec la valeur de retour ////////////////////////////////////////////////////////////////////////// var xhr; var page; try { xhr = new XMLHttpRequest(); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.onreadystatechange = function() { if(xhr.readyState == 4) { if(xhr.status == 200) { tmp=xhr.responseText; tmp=majax64(tmp); if (typeof(callback)=="function") { callback(tmp); } else { document.getElementById(callback).innerHTML = tmp; } } else { if (typeof(callback)=="function") { callback("Error code " + xhr.status); } else { document.getElementById(callback).innerHTML="Error code " + xhr.status; } } } }; xhr.open( "POST", page, true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); data=param; xhr.send(data); } function majax_request_me(param, callback) { /////////////////////////////////////////////////////////////////////////// // Envoie une request HTTP sur la page courant, en lui passent les paramètre // en méthode POST et en retournant le résultat dans la div target // Parametre ////////////////////////////////////////////////////////////// // param = les parametre à passer exemple : "id=5&type=content&auto=1" // target = l'id de la <div> qui vas contenir le code de retour ////////////////////////////////////////////////////////////////////////// var page; var sPath = window.location.pathname; var sPage = sPath.substring(sPath.lastIndexOf('/')+1); page=sPage; majax_request(page, param, callback); } function majax_form_submit(form_object, url, target) { // permet de remplacer l'envoie d'une form normal form.submit() // par cette fonction qui envoie la form form_object à la page URL en methode POST // et recois le retour dans l'ojet d'ID target. // il faut donc placer autour de la form une div pour recevoir le retour // ATTENTION la form_object doit être l'object form par un string param=form2url(form_object); majax_request(url, param, target); } function form2url(form) { // Création d'un url sur base du contenu d'une form // on passe la form en paramètre et elle renvoie un url complet de la form // utilisable comme paramètre GET // utilisable comme paramètre pour XMLHTTPRequest en mode POST ou GET xparam=""; for ( i=0; i < form.elements.length; i++) { xtype=form.elements[i].type; xname=form.elements[i].name; // alert(xtype); switch (xtype) { case "text": // idem select - one case "hidden": // idem select - one case "select-one": xvalue=form.elements[i].value; if (xparam!="") xparam+="&"; xparam+=xname+"="+escape(xvalue); break; case "radio": if (form.elements[i].checked) { xvalue=form.elements[i].value; if (xparam!="") xparam+="&"; xparam+=xname+"="+escape(xvalue); } break; case "checkbox": if (form.elements[i].checked) { xvalue=form.elements[i].value; if (xparam!="") xparam+="&"; xparam+=xname+"="+escape(xvalue); } break; case "textarea": xvalue=form.elements[i].innerHTML; if (xparam!="") xparam+="&"; xparam+=xname+"="+escape(xvalue); break; } } // retour de la valeur return xparam; } //#################################################################################################### </script>
12 avril 2009 à 09:49
11 avril 2009 à 15:52
je voudrais me mettre a l'ajax pour faire migrer un site de tchat fait php en site ajax
mais le probleme est le suivant.
j'ai du mal a trouver un bon tutoriel pour ajax.
alors un lien serrait la bienvenue
26 juin 2008 à 09:46
25 juin 2008 à 21:22
25 juin 2008 à 21:01
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.