Passer un tableau javascript en php via ajax

Résolu/Fermé
abirgl
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017
- 1 févr. 2017 à 15:13
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
- 8 févr. 2017 à 11:53
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

1 réponse

Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
543
1 févr. 2017 à 16:29
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
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017

1 févr. 2017 à 16:47
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
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
543
Modifié par Pitet le 1/02/2017 à 17:05
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
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017
> Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022

1 févr. 2017 à 17:11
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
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
543
2 févr. 2017 à 09:46
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
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017

Modifié par abirgl le 2/02/2017 à 10:39
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