Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Ajax] Variable de requête POST contenant '+' ou '&'

Comment échapper ces caractères proprement?

Sujet résolu
    7 novembre 2010 à 14:11:45

    Bonjour,
    Je code actuellement un petit webchat en ajax. Tout fonctionne très bien, sauf quand le message qu'on poste contient les caractère '+' ou '&'. Ces caractères sont bien évidemment interprété comme il se doit dans la syntaxe de la requête POST. J'aimerai donc pouvoir les échapper pour les récupérer correctement coté serveur, et j'hésite sur la méthode à utiliser.

    Voici un bout de mon code, la fonction query chargée d'envoyer les requête XHR au serveur :
    function query(query_type, data, process) {
    	var xhr;
    	try {
    		xhr = new ActiveXObject("Microsoft.XMLHTTP");
    	} catch(e) {
    		xhr = new XMLHttpRequest();
    	}
    	xhr.onreadystatechange = function() {
    		if(xhr.readyState == 4){
    			if(xhr.status == 200){
    				this.errorCount = 0;
    				process(xhr.responseText);
    			} else if(this.errorCount < 3) this.errorCount++;
    			else logout();
    		}
    	}
    	xhr.open("POST", "../server/webchat.php", true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send("query="+query_type + "&data="+data);
    }
    

    Ainsi que la ligne appellant cette même fonction lorsque l'utilisateur poste un message :
    query("send", nickname+" "+document.getElementById("message").value, process);
    
    • Partager sur Facebook
    • Partager sur Twitter
      7 novembre 2010 à 14:38:06

      encodeURIComponent(nickname+" "+document.getElementById("message").value) ?
      • Partager sur Facebook
      • Partager sur Twitter
        7 novembre 2010 à 14:59:46

        Merci beaucoup, c'est ce qu'il me fallait :)
        • Partager sur Facebook
        • Partager sur Twitter

        [Ajax] Variable de requête POST contenant '+' ou '&'

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown