Passage de paramètres du JQUERY au PHP

Passage de paramètres du JQUERY au PHP - PHP - Programmation

Marsh Posté le 10-06-2020 à 13:42:32    

Bonjour,
Je cherche à transférer un tableau Javascript en paramètre à un fichier PHP récupérable par la méthode GET.
Voici mon code:
HTML et JQUERY
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ajax - Load</title>
</head>
 
<body>
 <button id="action">Afficher</button><br/>
 <div id="r">Cliquez sur le bouton</div>
 
<script src="jquery.js"></script>
 
    <script>
      $(function() {
        $('#action').click(function() {
          var cr=new Array();
          cr[0]=40;
          cr[1]=60;
          z1='id='+cr;
           
          $('#r').load('progetable.php?',z1);
           });  
      });
     </script>
</body>
</html>

 
Et le fichier progetable.php
$mid=$_GET['id'];
echo $mid.'<br/>';
echo $mid[0].'<br/>';
echo $mid[1].'<br/>';
echo $mid[2].'<br/>';
echo $mid[3].'<br/>';
echo $mid[4].'<br/>';
?>

 
Questions :  
1 Pourquoi l'affichage du tableau et de ses éléments se comporte comme s'il s'agissait d'une chaîne de caractères ?
2 Comment faut-il coder le JQUERY pour pouvoir récupérer le tableau dans son intégrité ?
Merci pour votre réponse.
 

Reply

Marsh Posté le 10-06-2020 à 13:42:32   

Reply

Marsh Posté le 10-06-2020 à 14:05:13    

Tu peux l'envoyer via ajax en paramètre GET au script php. Si les infos sont complexes, tu peux les mettre dans une chaîne de caractères avec séparateur (ou JSON, ou XML) encodée en base64.
Genre : Info1###Info2###Info3###... et t'encodes ça en base64. Faut pas dépasser 2Ko en GET de mémoire.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 11-06-2020 à 09:26:50    

Merci pour la réponse,
Le passage de chaîne par la méthode précédemment exposée ne m'a pas posé de difficulté particulière.  
Ma question sur le passage d'un tableau reste d'actualité.
Je voudrais juste savoir comment coder l'affectation de la variable z1 pour pouvoir envoyer le tableau au PHP par la méthode GET.

Reply

Marsh Posté le 11-06-2020 à 12:16:48    

Je viens de te l'expliquer : tu sérializes en quelque sorte le contenu de ta variable js dans une chaîne de caractères js qui sera convertie en base64 et passée en GET à ton script php. Si ton tableau a 2 dim, tu utilises un séparateur différent pour les lignes et colonnes.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-06-2020 à 08:57:44    

Oui rufo, j'avais compris la solution que tu me proposes mais elle ne répond pas exactement à ma demande. Sans doute l'avais-je mal exprimée. Je vais essayer de la reprendre :
Avec cette méthode jquery, je peux passer des paramètres au fichier PHP, qu'ils soient variable simple ou chaîne. Mais je ne réussi pas à passer un tableau entier ni à le récupérer en tant que tel. Le script que j'ai donné dans mon message initial transforme le tableau en une chaîne. Si, par exemple cr[0]=40 dans le script, je récupère cr[0]=4 et cr[1]=0 dans le PHP. Ce n'est pas tout à fait cela que j'attendais et c'est pourquoi j'ai mis en cause la façon de coder la variable z1.  z1='id='+cr;  n'est sans doute pas la bonne formulation pour ce que je veux faire. Je suppose qu'elle existe quelque part mais je n'ai pas trouvé sur le Net, d'où mon appel sur ce forum...
Voilà, c'est un peu long mais j'espère que c'est plus clair.
 

Reply

Marsh Posté le 13-06-2020 à 09:44:13    

Je ne comprends pas ce que tu dis. Si t'as une variable cr[0]=40 et que tu la passe en paramètre au script php :
partie JS (c'est un ex) :
httpRequest.open("GET", "script.php?id=" + cr[0] + "&autreVar=" + cr[1]);    
httpRequest.send();
 
Côté php, tu va récupérer dans $_GET['id'] la valeur de cr[0] et dans $_GET['autreVar'] la valeur de cr[1].
 
Au passage, faire z1 = "string" + varDeTypeArray, ça n'a aucun sens. Et donc, c'est bien ce que je te dis, tu n'as pas compris ma méthode
 
Moi, ce que je te propose, c'est en js :

Code :
  1. var sTab = "";
  2. for(var i = 0; i < MonTab.length; i++)
  3. {
  4.    if (i > 0)
  5.    {
  6.         sTab += "###";
  7.    }
  8.    sTab += MonTab[i];
  9. }
  10. // Tu encodes sTab en base64 pour éviter les pbs avant l'envoi
  11. httpRequest.open("GET", "script.php?monTab=" + sTab);    
  12. httpRequest.send();


 
Et côté php, tu fais : $MonArray = explode('###', $_GET['monTab']));
 
Evidemment, faut protéger tout ça contre les injections de balises, scripts... mais c'est l'idée de base que j'essaye de t'exposer depuis le début.


Message édité par rufo le 13-06-2020 à 09:44:46

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-06-2020 à 10:38:11    

Merci B4X pour cette mise au point.
Elle me sera utile pour mes futurs développements.

Reply

Marsh Posté le 13-06-2020 à 10:40:05    

Décidément, Rufo, nous n'arrivons pas à nous comprendre.  
Qu'importe ! Je te remercie pour tes réponses et garde sous le coude la dernière que je pense pouvoir exploiter un jour.

Reply

Marsh Posté le 13-06-2020 à 11:35:15    


Tu noteras que je lui ai parlé de JSON et XML aussi. Mais celle du séparateur me paraissait la plus simple vu manifestement le niveau débutant que l'auteur du topic semble avoir (je dis sans méchanceté ou autre ;)). Le JSON ou XML me paraissait simplement plus complexe à exploiter pour lui.
On se rejoint sur l'encodage en base64 ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed