IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Passer en param�tre ajax un tableau javascript


Sujet :

AJAX

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut [AJAX] Passer en param�tre ajax un tableau javascript
    Bonjour, je cherche � savoir si c'est possible de passer en param�tre ajax un tableau javascript, et qu'il soit interpr�t� en tant que tel.

    Je m'explique. J'ai une page qui construit un graphique � partir d'un tableau javascript. Je tente de construire ce tableau dans une page php appel�e en ajax (jusque l� �a fonctionne), mais je ne sais pas comment renvoyer le tableau javascript pour qu'il soit interpr�t�.

    J'arrive bien � cr�er mon tableau javascript � partir de donn�es php, mais lorsque je retourne le r�sultat du tableau, il n'est pas interpr�t�.

    C'est jouable ? Une id�e ? Merci d'avance.

    Voici ma page ajax :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    function construisTableauJS($tableauPHP, $nomTableauJS){
    	echo $nomTableauJS." = new Array();";
    	for ($i=0; $i<count($tableauPHP); $i++) {
    		if (!is_array($tableauPHP[$i])) {
    			echo $nomTableauJS."[".$i."] = ".$tableauPHP[$i].";";
    		} else {
    			construisTableauJS($tableauPHP[$i], $nomTableauJS."[".$i."]");
    		}
    	}
    	return;
    }
     
    $varCulture = "EBM";
    $varEcheance = "2";
     
     
    $varCotation = mysql_query("SELECT * FROM ".$varCulture." ORDER BY timestamp ASC");
     
    	while ($varNtotal = mysql_fetch_array($varCotation)) {
    		$varVar2 = "varHistorique_".$varCulture.$varEcheance;
    		${$varVar2}[] = array($varNtotal['timestamp'], $varNtotal['echeance_'.$varEcheance]);
    		echo "<script type='text/javascript'>";
    		construisTableauJS($$varVar2, $varVar2);
    		echo "</script>";
    	}
     
    echo json_encode(array('requete'=>$varVar2));

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Citation Envoy� par nicolas2603
    je cherche � savoir si c'est possible de passer en param�tre ajax un tableau javascript, et qu'il soit interpr�t� en tant que tel.
    Non, les donn�es transitent via le protocole HTTP qui est sans �tat, ce qui fait que seules des donn�es textuelles peuvent �tre �chang�es.
    En revanche, il y a dans la FAQ et dans les contributions des exemples pour "s�rialiser" un tableau JavaScript et l'envoyer � un script PHP.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut
    Ok, donc il faut que je le "s�rialise" car il transite sous forme de chaine en fait. L'id�e, c'est de s�rialiser dans ajax et de l'envoyer via json s�rialis�, ou au contraire d'envoyer la chaine, et ensuite de s�rialiser le r�sultat obtenu ?

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut
    Bon alors voici o� j'en suis.
    1. la page qui va interpr�ter le tableau en javascript et qui appelle l'AJAX :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    $.post('inc.php',
    	{ culture: num[0], echeance: num[1] },
    	function(data) {
    		var tableau = eval('('+data+')');
    		alert(tableau);				
    	}, 'json'
    );
    Et la page AJAX qui cr�� le tableau et le retourne s�rialis� en JSON :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    while ($varNtotal = mysql_fetch_array($varCotation)) {
    	$varHistorique[] = array($varNtotal['timestamp'], $varNtotal['echeance_2');
    }
    echo json_encode($varHistorique);
    Lorsque je fais un alert basique, je vois bien toute mes valeurs pass�es, sous la forme x1, x2, x3, x4. Et lorsque je fais l'�val, je n'obtiens que la derni�re valeur.

    O� est mon erreur ?

  5. #5
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Dans ton $.post(), tu pr�cises d�j� que le r�sultat attendu est au format JSON, c'est donc jQuery qui se charge de transformer le r�sultat re�u en objet (et au passage, de fa�on plus propre que ton eval()...), du coup, refaire un eval() sur ce r�sultat est une erreur.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut
    Bon j'ai pris en compte ce que tu m'as dit, et j'ai corrig� le tir en comprenant un peu mieux le fonctionnement. J'ai du coup trouv� une fonction de transformation qui m'a donn� un r�sultat satisfaisant.

    1. la page qui va interpr�ter le tableau en javascript et qui appelle l'AJAX :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    function array2json(arr) {
    var parts = [];
    var is_list = (Object.prototype.toString.apply(arr) === '[object Array]');
    for(var key in arr) {
    	var value = arr[key];
    	if(typeof value == "object") {
    		if(is_list) parts.push(array2json(value));
    		else parts[key] = array2json(value);
    	} else {
    		var str = "";
    		if(!is_list) str = key + ':';
    		if(typeof value == "number") str += value;
    		else if(value === false) str += 'false';
    		else if(value === true) str += 'true';
    		else str += value;
    		parts.push(str);
    	}
    }
    var json = parts.join(",");
    if(is_list) return '[' + json + ']';
    return '{' + json + '}';
    }
     
    $.post('inc.php',
    { culture: num[0], echeance: num[1] },
    function(data) {
    	var tableau = array2json(data);				
    }, 'json'
    );
    2. la page AJAX qui cr�� le tableau et le retourne s�rialis� en JSON :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    while ($varNtotal = mysql_fetch_array($varCotation)) {
    	$varHistorique[] = array($varNtotal['timestamp'], $varNtotal['echeance_2']);
    }
     
    echo json_encode($varHistorique);
    Merci pour l'aide apport�e !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AJAX] Passer plusieurs param�tres
    Par verbose dans le forum jQuery
    R�ponses: 2
    Dernier message: 07/05/2012, 19h08
  2. Passer l'indice d'un tableau Javascript vers PHP
    Par Hastur dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 10/06/2009, 19h59
  3. R�ponses: 3
    Dernier message: 16/05/2007, 10h03
  4. Servlet + AJAX : passer des param�tres
    Par Mister Nono dans le forum Servlets/JSP
    R�ponses: 3
    Dernier message: 14/12/2006, 09h12
  5. [PHP-JS] passer des param�tre de php a javascript
    Par alexmorel dans le forum Langage
    R�ponses: 7
    Dernier message: 08/10/2006, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo