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 :

Manipulation paramètre json


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut Manipulation paramètre json
    Bonjour,

    Je rencontre un problème pour formater un paramètre json que j'incorpore dans un mail.

    J'ai un formulaire ou à la validation, j'envoie un mail de confirmation de prise en compte de la demande.
    J'arrive bien à récupérer les champs que je veux mais j'ai un petit souci concernant le formatage d'une URL.

    Mon JS pour récupérer les différents paramètres json :

    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
    30
    31
    32
    33
    34
    35
    function registerTraining() {     	
    	var path = $(location).attr('href');
    	var capchallenge = Recaptcha.get_challenge();
    	var capresponse = Recaptcha.get_response();
    	try {
    		var parameters = '{ "url" : "' + cleanJSONString(path) + 
    			'", "firstname" : "' + cleanJSONString($("#inputFirstname").val()) + 
    			'", "lastname" : "' + cleanJSONString($("#inputLastname").val()) + 
    			'", "email" : "' + cleanJSONString($("#inputEmail").val()) + 
    			'", "company" : "' + cleanJSONString($("#inputCompany").val()) + 
    			'", "job" : "' + cleanJSONString($("#inputJob").val()) + 
    			'", "address1" : "' + cleanJSONString($("#inputBillingAddress1").val()) + 
    			'", "address2" : "' + cleanJSONString($("#inputBillingAddress2").val()) + 
    			'", "trainingname" : "' + cleanJSONString(GetQueryStringParams("n")) +
    			'", "trainingdate" : "' + cleanJSONString(GetQueryStringParams("d")) +
    			'", "message" : "' + cleanJSONString($("#inputMessage").val()) + 
    			'", "captchachallenge" : "' + capchallenge + 
    			'", "captcharesponse" : "' + capresponse  + '" }';
    		$.ajax({
    			type: "POST",
    			url: '_vti_bin/json/test.svc/registertraining',
    			contentType: "application/json; charset=utf-8",
    			dataType: 'json',
    			data: parameters,
    			success: function (msg) {
    				registerTrainingSucceeded(msg);
    			},
    			error: registerTrainingFailed
    		});
    	}
    	catch (e) {
    		alert('Error invoking service' + e);
    	}
    	Recaptcha.reload();	
    }
    Je fais appel à mon WebControl pour l'envoi du mail : pas de souci de ce côté.
    Mais dans le mail, je retrouve mon champs "Trainingname" de ce type :
    - Risk%20management%20under%20UCITS%20%3A%20legal%20and%20regulatory%20framework /
    J'aimerais pouvoir formater ce champs pour le recevoir sans les caractères spéciaux.

    Dans mon WebControl, voila comment je construis mon mail :

    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
    /// <summary>
    /// Writes confirmation RegisterTraining e-mail  
    /// </summary>
    private string BuildConfirmationRegisterTrainingBody(string firstname, string lastname, string email, string contactemail, string trainingname, string trainingdate)
    {
        StringBuilder sb = new StringBuilder();
        sb.AppendLine("Confirmation : Register for training");
        sb.AppendLine();
        sb.AppendLine(string.Format("To : {0} ({1} {2})", email, firstname, lastname));
        sb.AppendLine(string.Format("Training name : {0} / Training date : {1}", trainingname, trainingdate));
        sb.AppendLine();
        sb.AppendLine("We acknowledge receipt of your email. Thank you very much for your interest in our training programme. Our administrative department will contact you in the next 24 hours to confirm your registration.");
        sb.AppendLine();
        sb.AppendLine("Best regards,");    
        return sb.ToString();
    }
    J'ai pourtant ajouté une fonction JS pour cleaner les valeurs que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function cleanJSONString(str)
    {  	
    	//clean values in json properties so as to send a valid json request	
    	return str.replace(/[/\\""]/g, "")
    	.replace(/\\n/g, "\\n")
    	.replace(/\\&/g, "\\&")
    	.replace(/\\r/g, "\\r")
    	.replace(/\\t/g, "\\t")
    	.replace(/\\b/g, "\\b")
    	.replace(/\\f/g, "\\f");		
    }
    Mais j'ai toujours les "%20...etc." de mon paramètre "trainingname".
    Comment je dois m'y prendre pour enlever les "%20...etc." ?

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/01/2011, 21h06
  2. [Dojo] manipulation du fichier json
    Par execrable dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 04/01/2011, 08h55
  3. Réponses: 0
    Dernier message: 12/08/2010, 10h25
  4. Manipulation d'un objet JSON
    Par ordiminnie dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/09/2009, 16h48
  5. Problème pour manipuler un paramètre
    Par fab76000 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 06/01/2009, 11h55

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