11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je cherche à récupérer des tableaux ou des variables issus d'une requête mysql / php via ajax, car je souhaite pouvoir manipuler les données en javascript.

<?php
$tab1= Array(1,2,3,4,5);
echo json_encode($tab1);
$tab2= Array("a","b","c","d","e");
echo json_encode($tab2);
?>


$(document).ready(function(){
$.ajax({
	type : 'POST',
	url : 'php/test.php',
	data : 'name=Eric',
	success : function(data){
		// Comment récupérer tab1 et tab2 sous forme de tableaux
		// parsés ici ?
	}
});
});

J'ai essayé plusieurs petites choses à l'intuition mais sans succès, et je ne m'y retrouve pas non plus dans la doc.
Salut,

Sache que uniquement le premier "echo" sera pris en compte.

$(document).ready(function(){
$.ajax({
	type : 'POST',
	url : 'php/test.php',
	data : 'name=Eric',
	success : function(data){
		// Comment récupérer tab1 et tab2 sous forme de tableaux ; uniquement tab1
		// parsés ici ? oui
               var json = JSON.parse(data)
	}
});
});


Et pourquoi deux tableaux ?? pourquoi ne fait tu pas un seul tableau ?
Modifié par JENCAL (30 Mar 2016 - 10:04)
Bonjour,

Oui en gros, il ne faut envoyer qu'un tableau, donc rien ne t'empêche de simplement coller tes tableaux dans un troisième :

$tab1= Array(1,2,3,4,5);
$tab2= Array("a","b","c","d","e");
$tab = [];
$tab["tab1"] = $tab1;
$tab["tab2"] = $tab2;
echo json_encode($tab);

Et pour la requête ajax, précise directement le dataType:json, tu évites comme ça le parse. (EDIT: T majuscule à dataType)
Modifié par SolidSnake (30 Mar 2016 - 11:33)
Merci JENCAL,

En effet, non seulement seul le premier "echo" sera pris en compte mais le deuxième va provoquer une erreur.

Ta question : "Et pourquoi deux tableaux ?? pourquoi ne fait tu pas un seul tableau ?"

Tu me conseillerais de faire passer mes données de quelle manière si j'avais par exemple des tableaux de différentes tailles ? Et si j'avais des données hétérogènes qui revenaient de mon fichier php, genre deux variables et deux tableaux de tailles différentes ? Tu me conseillerais de séparer les requêtes depuis le fichier js ?

Je tombe un peu dans les généralités, désolé, mais je suis en train de faire joujou et d'apprendre avant de me lancer dans un projet plutôt vaste et j'aimerais si possible ne pas me rater dès la première marche !
Ricou89 a écrit :
Et si j'avais des données hétérogènes qui revenaient de mon fichier php, genre deux variables et deux tableaux de tailles différentes ?

Tu colles tout dans un tableau !
OK SolidSnake, un tableau. C'est important les tableaux. En plus ça tombe bien, je ne déteste pas les tableaux.

Or donc, imaginons un exemple concret et que j'aie, dans mon fichier php, ces trucs à faire passer :
$reponse=4;
$continuer=false;
$tab1=["oui","non","On ne sait pas."];
$tab2=[1,1,1,2,2,3,0,0,1,2,3,2,1,0,2,1,1,2,1,2,3,3,3,2,2,0,0,1,1,1,1,1,1,1,2,1];

1) Comment mettre ce fourbi dans un tableau en php ?
2) Comment récupérer ça de l'autre côté dans l'ajax ?

Mon Dieu, ou SolidSnake ou JENCAL, c'est la même chose, s'il y a une réponse à ça, c'est top parce que je vais m'en servir 200 fois. Minimum.
j'ai envie de te répondre : JSON Smiley langue

essaye de coder un peu ton tableau JSON en PHP, test avec des var_dump exit et reviens vers nous.

Tu regroupe tout dans un tableau comme SolidSnake la précisé, tu encode en JSON et voila
Modifié par JENCAL (30 Mar 2016 - 12:25)
Vous auriez peut-être un tutoriel ou une documentation particulièrement bien faite à me conseiller ?

JENCAL, tu as l'air de penser que je voudrais "profiter" des compétences des intervenants du forum en posant ma question de façon trop concrète. Ça embête que j'essaie d'avancer à l'arrache ? S'il y a des règles dans l'apprentissage de JSON et compagnie, j'aimerais savoir où ça se trouve. Les bons plans SVP.

J'ai fait une recherche sur ce même forum comme j'ai précisé en début de post et je n'ai pas trouvé de réponse à ma question, c'est pour ça que je me permets de la poser de façon directe et concrète, avec un peu d'humour. Je pense que ça devrait passer.
Ah OK, la réponse à ma question est peut-être dans le premier post de SolidSnake. Je regarde ça et je reviens quand j'ai compris.
Modifié par Ricou89 (30 Mar 2016 - 13:11)
Ricou89 a écrit :

JENCAL, tu as l'air de penser que je voudrais "profiter" des compétences des intervenants du forum en posant ma question de façon trop concrète. Ça embête que j'essaie d'avancer à l'arrache ? S'il y a des règles dans l'apprentissage de JSON et compagnie, j'aimerais savoir où ça se trouve. Les bons plans SVP.


Alors là, pas du tout... je sais reconnaître les profiteurs, et ton problème tu la bien expliquer. Il est vrai que j'aurais du accompagner ma réponse de liens, mais javais faim Smiley langue Après, il n'y a pas meilleurs façon d'apprendre que de mettre les mains dedans hein ! mais je reconnais que j'aurais du t'envoyer vers les ressources nécessaire.
Tu avais faim et, avec un petit décalage horaire étant déjà à l'apéro, j'ai été prompt à la bagarre, je me suis échauffé rapidement. Mais tout s'arrange car j'ai trouvé ! C'est vachement pervers comme truc mais ça donne ça :

<?php
$tab1= Array(1,2,3,4,5);
$tab2=Array("oui","non","pas vrai");
$var1="possible";
$var2="France";
$tab = [];
$tab["tab1"] = $tab1;
$tab["tab2"] = $tab2;
$tab["var1"] = $var1;
$tab["var2"] = $var2;
echo json_encode($tab);
?>

$(document).ready(function(){
$.ajax({
	type : 'POST',
	url : 'php/test.php',
	data : 'name=Eric',
	dataType : 'json',
	success : function(data){
		var tab = data;
		alert("tab1 = " + tab["tab1"][0]);// 1
		alert("tab2 = " + tab["tab2"]);// "oui","non","pas vrai"
		alert("var1 = " + tab["var1"]);// "possible"
		alert("var2 = " + tab["var2"]);// "France"
	}
});

});


Merci pour votre aide. J'adore ce forum, on a de bonnes réponses. Quand on les lit bien Smiley biggrin .
Ok super, un tableau contenant plusieurs tableau encodé en JSON c'était bien cela la solution, bien joué.
Ricou89 a écrit :
Merci pour votre aide. J'adore ce forum, on a de bonnes réponses. Quand on les lit bien Smiley biggrin .

You're welcome.

N'oublie pas de passer le topic en résolu Smiley cligne
Pourquoi si je remplace les alert par des innerHTML, cela ne fonctionne que pour le premier appel, ensuite j'ai un "TypeError: Cannot set property"
document.getElementById("chemin1").innerHTML = tab["tab1"][0];
renvoi bien 1 mais je passe en erreur sur la ligne suivante :
document.getElementById("chemin2").innerHTML =tab["tab1"][1];
Bonjour à tous,

j'ai vraiment besoin d'un coup de main, je fais exactement le meme processus que Ricou89.

Mais ma function Ajax ne lis pas mon tableau Smiley ohwell

setInterval(function(){

    $.ajax({
        type: 'GET',
        url:"display.php",
        dataType: "json",
        contentType: "application/json; charset=utf-8",


        success: function (res) {
            console.log(res);
        },

        error: function(){
            console.log("error");
        }
        
    })

}, 1000)


alors qu'un vardump me montre bien qu'il est remplis et le echo json_encode($tab) me montre à l'ecran qu'il est bien "formaté" en JSON
Modifié par Deblandero (17 Jul 2018 - 10:39)