Comment lancer un script PHP qui ne décharge pas la page courante ? [Résolu]

Signaler
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013
-
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
Bonjour,


 


Je fais appel à la communauté pour savoir si, depuis une page HTML classique, nommée pour cette explication "A", il est possible de lancer un script PHP (qui en loccurence met à jour des données sur un serveur, mais qui n'affiche absolument rien, ne retourne vers le client absolument rien) SANS que la page courante "A" soit déchargée.


 


J'y arrive lorque je force un download, arrivant même à lancer du java derrière, mais hormis ce cas très special, je n'arrive pas à le faire dans le contexte indiqué ci-dessus.


 


Est-ce possible et comment ?


 


Par avance Merci !


 


BlueManCa.

3 réponses

Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
29
Salut,

Regarde du côté d'AJAX !
XMLHTTPRequest

a++

Si la réponse vous convient, pensez : Réponse accepté !
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013

Merci nicomilville !

Voici à ce propose des bouts de codes que j'ai trouvé et qui aideront tous ceux qui, comme moi, ont besoin de pouvoir lancer des scripts (avec ou sans données en retour) SANS DÉCHARGER la PAGE COURANTE : TRÈS PRATIQUE !!!! :

Partie Javascript (dans cet exemple on envoie deux données : 2 chaines stockées dans 2 INPUT de type TEXTE)  :
--------------------------------------------------------------------------------------------------------------------

var xhr_object = null;




 



if(window.XMLHttpRequest) // Firefox
   xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
   return;
}





 



var method   = f.elements["method"][0].checked ? "GET" : "POST";
var filename = "strings2.php";
var s1       = f.elements["string1"].value;
var s2       = f.elements["string2"].value;
var data     = null;





 



if(s1 != "" && s2 != "")
   data = "s1="+s1+"&s2="+s2;





 



if(method == "GET" && data != null) {
   filename += "?"+data;
   data      = null;
}





 



xhr_object.open(method, filename, true);





 



xhr_object.onreadystatechange = function() {
   if(xhr_object.readyState == 4) {
      var tmp = xhr_object.responseText.split(":");
      if(typeof(tmp[1]) != "undefined") {
         f.elements["string1_r"].value = tmp[1];
         f.elements["string2_r"].value = tmp[2];
      }
      alert(tmp[0]);
   }
}





 



if(method == "POST")
   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");





 





xhr_object.send(data);






Partie PHP (dans cet exemple cela renvoie les 2 chaines mais inversées)  :
--------------------------------------------------------------------------------------------------------------------

header('Content-type: text/html; charset=iso-8859-1');




 



if(count($_POST) > 0) {
   echo "Données reçues en POST:";
   foreach($_POST as $v)
      echo strrev(utf8_decode($v)).":";
}
elseif(count($_GET) > 0) {
   echo "Données reçues en GET:";
   foreach($_GET as $v)
      echo strrev($v).":";
}





 



if(count($_POST) 0 && count($_GET) 0)
 echo 'Aucune donnée n\'a été reçue par "'.basename($_SERVER["PHP_SELF"]).'"...';



Conclusion :
------------

Vous pourrez simplifier encore ce code en virant toute la partie GET : il faut mieux utiliser POST, c'est plus propre.

On peut lancer des traitements avec ou sans retour, sans décharger la page courante avec XMLHttpRequest.

Voili, voulou !

 BlueMan
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
29
De rien, j'avais un peu peur que tu fuis comme plein d'autre gens quand je dis ajax il s'enfuient !

a++

Si la réponse vous convient, pensez : Réponse accepté !