Passer un tableau javascript en php via ajax

Résolu
abirgl Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai besoin de passer un tableau javascript en php, pour ce faire j'ai essayé d'utiliser ajax mais ça m'affiche un message d'erreur "Undefined index: tab in ..." , voici le code de mon fichier testajax7.php:

<script type="text/javascript">
var tab=['a','b','c','d'];
</script>
<script type="text/javascript">
$.ajax({
type: "POST",
url: "testajax7.php",
data: { tab : tab},
success: function() {
alert("Success");
}
});
</script>

<?php
$myTable = $_POST['tab'];
print_r($myTable);
?>

j'ai mis testajax7.php dans url: de la fonction ajax parce que j'ai besoin du tableau dans la même page (tout le traitement se fait dans la même page)
SVP, comment je peux modifier ce code pour que je puisse récupérer le tableau en php ?
Merci d'avance

A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Ton code fonctionne mais au premier chargement de la page, la variable $_POST['tab'] n'existe pas encore (créée ensuite par la requête ajax) d'où le message d'erreur.
Il faut vérifier l'existence de cette variable avec isset ou empty.

Au passage :
- en html5, plus besoin de préciser l'attribut type pour du code js sur les balises script
- pas besoin de fermer et ouvrir les balises script si il n'y a rien entre les deux
- tu peux cibler la page actuelle en utilisant le symbole #

Exemple de correction :
<?php
if (isset($_POST['tab'])) {
	$myTable = $_POST['tab'];
	print_r($myTable);
} else {
?>
	<script>
	var tab=['a','b','c','d'];
	
	$.ajax({ 
		   type: "POST", 
		   url: "#", 
		   data: { tab : tab}, 
		   success: function(data) { 
				alert(data);
			} 
	}); 
	</script>
<?php 
}
?>


Bonne journée,
0
abirgl Messages postés 127 Date d'inscription   Statut Membre Dernière intervention  
 
Salut Pitet,
merci pour les remarques ^^ ,
j'ai testé le code que vous avez posté mais ça n'a rien affiché, j'ai fait f12 pour voir ce qui s'affiche en console et j'ai trouvé l'erreur :"Uncaught ReferenceError: $ is not defined at ..."
:(
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Oui la fonction $.ajax fait partie de jQuery.
Puisque tu ne l'avais pas précisé dans ton premier code, je pensais que tu l'avais déjà inclus.
Sinon :
<?php
if (isset($_POST['tab'])) {
 $myTable = $_POST['tab'];
 print_r($myTable);
} else {
?>
 <script src=""quot;https://code.jquery.com/jquery-3.1.1.min.js"></script>
 <script>
 var tab=['a','b','c','d'];
 
 $.ajax({ 
     type: "POST", 
     url: "#", 
     data: { tab : tab}, 
     success: function(data) { 
    alert(data);
   } 
 }); 
 </script>
<?php 
}
?>

PS : sans le
"quot;
0
abirgl Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   > Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup Pitet, ça affiche le tableau en alert , mais pour le traitement que je vais faire en php, j'ai besoin d'un tableau php, j'ai essayé ajax pour stocker le contenu du tableau javascript dans un tableau php, est ce que c'est faisable ? et comment ça se fait SVP ? merci beaucoup
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Et le tableau $_POST['tab'] alors ?
Le tableau affiché en alert provient de l'affichage du tableau php. Si tu n'a pas besoin de récupérer le résultat de ton traitement php via javascript, la requête ajax est alors inutile et tu pourrais simplement utiliser un formulaire.
0
abirgl Messages postés 127 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Pitet,
Je crois que j'ai pas bien expliqué mon besoin, j'essaye de réexpliquer :
J'ai un tableau javascript (il n'est pas le résultat d'un traitement php, c'est un simple tableau javascript)

var tab=['a','b','c','d'];

par suite, je veux utiliser ce tableau pour un traitement php, j'ai pas trouvé comment le passer de javascript à php, on m'a dit que ajax est la solution , et voilà j'essaye de transmettre mon tableau javascript via ajax pour récupérer enfin un tableau php,
le tableau dont j'ai besoin en php doit être comme suit :
$tab=array('a','b','c','d');
Est ce que c'est possible de le faire avec ajax ou je dois chercher une autre façon de faire ceci ?
PS: Tout le traitement doit s'effectuer dans la même page (dans url de la fonction ajax ça doit rester #)
Merci énormément pour vos réponses et vos efforts
0