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

JavaScript Discussion :

[AJAX] json et saut de ligne mysql


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 42
    Points
    42
    Par défaut [AJAX] json et saut de ligne mysql
    Bonjour à tous,

    Je rempli les champs d'un formulaire avec JSON et j'ai rencontré deux problèmes. Le premier était un problème d'encodage de caractères alors que mon header contenait bien le type d'encodage. J'obtenais des ? ç la place d'accents.
    J'ai donc pu trouver la solution sur le net en créant un fichier .htaccess.

    Mon second problème pour le moment non résolu est que certains champs contiennent des sauts de ligne. Lorsque c'estle cas aucun des champs du formulaire ne se remplissent. Dès que je supprime les sauts de ligne je n'ai plus de problèmes.

    Avez-vous une idée pour résoudre ce problème?

    Merci et bon week end.

  2. #2
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par mat10000 Voir le message
    Avez-vous une idée pour résoudre ce problème?
    Si ton serveur est en PHP, il faut utiliser htmlspecialchars(), en ASP Server.HTMLencode(). Dans toutes les technos, il existe une commande spécifique permettant de traiter les caractères spéciaux (comme les retorus chariots).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 42
    Points
    42
    Par défaut
    Bonjour et merci de ta réponse.

    J'avais déjà essayé cela mais je m'y suis peut être mal pris. Apparemment je récupère bien mes sauts de lignes via ma requête sql mais c'est au moment de lé redistribution des champs avec JSON que ça à l'air de bloquer.

    Voici comment je procède, ça permettra surement de voir plus facilement mon erreur. Il s'agit d'une base de données de produits.

    Tout d'abord je sélectionne dans une liste déroulante le produit que je souhaite afficher dans mon formulaire. Sur cette liste déroulante sur un onChange je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function loadFields() {
    		id = $("select[name='modif']").val(); // Get selected id from the select value
    		// RPC call
    		$.getJSON("?mode=json", {'id': escape(id)}, function(data) {
    			// Fill form with data returned by the JSON call
    			for (key in data){
    				$(":input[name='"+escape(key)+"']").val(htmlspecialchars(data[key]));
    			}
    		});
    Ensuite je vérifie si mode=json et j'exécute mes requêtes php
    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
     
    function generateJSON() {
    	// Here we get the content of the requested entry
    	$id = escape($_GET['id']); // <== WARNING ! SQL INJECTION ! Please escape it !!
     
    	if (!isset($id))
    		return FALSE;
     
    	$result = mysql_query("SELECT * FROM produit WHERE produit_id=".$id." ORDER BY produit_nom LIMIT 1") or die(mysql_error());
     
    	$row = mysql_fetch_array($result, MYSQL_ASSOC); // Here we have 1 row (LIMIT 1)
     
    	// This puts the result of mysql_query in a JSON output form
    	// Will be like {'column_name': 'column_value', 'column2_name': 'column2_value'}
    	print "{";
    	while ($key = key($row)) {
    		print "'" . $key . "': '". str_replace("\"", "\\\"", htmlspecialchars($row[$key])) ."'"; // Here, I escape "
     
    		if (next($row) !== FALSE) // The two = in !== are mandatory ! It's not a mistake ! (see PHP doc)
    			print ",";
    	}
    	print "}";
    }
    et donc ça fonctionne parfaitement bien tant que je n'ai pas de sauts de ligne.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 42
    Points
    42
    Par défaut
    Bonjour à tous,

    Je ne comprends pas trop ce qu'il se passe !!
    Ma fonction php generateJSON() à l'air de retourner correctement mon tableau associatif. Par contre dans la fonction loadFields() après avoir récupéré l'id rien ne se passe. J'ai ajouté un alert dans $.getJSON mais ça ne fonctionne pas.

    J'ai essayé en utilisant str_replace pour virer les saut de lignes mais ça ne fonctionne pas non plus !!

    une idée?

    merci et bonne journée

    EDIT : autant pour moi, le str_replace fonctionne mais du coup je récupère des <br> dans mon champs !!

    EDIT : bon bein du coup au niveau du javascript j'ai remplacé data[key] par data[key].replace('<br />','\n') et ça fonctionne. M'enfin c'est quand même étrange de virer les sauts de ligne pour les rajouter ensuite !! à mon avis je me suis planté quelque part.

    Merci à tous

Discussions similaires

  1. Garder les sauts de ligne d'un textearea aprés traitement par javascript/Ajax
    Par guillaumeIOB dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 18/10/2014, 22h53
  2. Afficher un champ mysql textarea avec des sauts de lignes
    Par Alpoids dans le forum Ext JS / Sencha
    Réponses: 7
    Dernier message: 19/11/2010, 15h25
  3. Saut de ligne sans <br/>
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 21/06/2007, 11h21
  4. [AJAX] saut de ligne
    Par Raideman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/04/2007, 15h52
  5. [AJAX] Saut de ligne dans une page html
    Par rapace dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/02/2006, 09h44

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