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

jQuery Discussion :

charset en AJAX avec jQuery


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut charset en AJAX avec jQuery
    Bonjour,

    J'utilise jQuery pour faire des requête AJAX. Cela fonctionne sauf que mes données sont transférées dans un format qui ne supporte pas les accents Français (é, è, à, ni les apostrophe, etc.).

    J'ai le code suivant:

    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
     
     
    function loadDataByAjax(arg) {
        $( "content" ).empty();
    $.ajax({
    	url: "scriptx.php",
    	beforeSend: function ( xhr ) {
    		xhr.overrideMimeType("text/plain; charset=UTF-8");
    	},
    	data: {	p : arg },
    	statusCode: {
    		404: function() {
    			alert("page not found");
    		}
    	},
    	success: function( data ) {
    		$( ".content" ).empty();
    		$( ".content" ).html( data);
    	}	
    }).done(function() {
    		// $(this).addClass("done");
    	});
     
    }
    J'ai essayé de modifier le charset (j'ai mis UTF-8 dans le code ci-dessus) en iso-8859-1 mais cela ne fonctionne pas.

    Une idée ?

    Merci.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Les transactions AJAX de jQuery se font toujours en UTF-8.

    Voir : Comment encoder votre site intégralement en UTF-8.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Bonsoir.

    Merci. J'ai ajouté la ligne que tu proposes mais toutes mes pages sont évidement, avec des carré et des symboles bizarre à la place d'accent français.

    J'ai utilisé la fonction utf8_encode() pour encoder mes données de la transaction Ajax, coté serveur PHP. Ca fonctionne bien.

    J'ai lu en diagonale le lien que tu donnes. Si je comprends bien, il faut en plus, que j'enregistre TOUS mes fichiers (.php, .txt, .htm, javascript, etc.) au format UTF-8 (Unicode) ? Et que j'ajoute aussi le header php suivant
    header( 'content-type: text/html; charset=utf-8' );

    sur toutes mes pages php ? C'est bien cela ? plus la config Apache et de la base de données ? C'est bien cela ?

  4. #4
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    J'ai lu avec attention le lien sur l'UTF-8 que tu proposes ici, mais je ne comprends pas du tout l'intérêt de formater les fichiers sources au format UTF-8. J'ai du mal comprendre.

    J'ai une autre question sur JavaScript. Puisque la méthode AJAX de jQuery ne supporte que l'UTF-8, j'ai pensé à coder ma propre fonction d'Ajax. Mais j'ai une question: est-ce que l'objet JavaScript XMLHttpRequest supporte le format occidental ( harset=iso-8859-1) ? Si oui, commet le stipuler dans le code ? Parce que je ne veux pas me retrouver dans la même situation qu'avec jQuery.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Par défaut
    Bonjour,

    J'ai codé une courte fonction pour remplacer la méthode Ajax de jQuery (pas sans un peu de mal). Mais j'ai toujours le problème du format UTF-8. Il semblerait que toutes les transactions Ajax se font dans ce format. C'est un peu limitant.

    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 loadDataByAjax(arg){
     
    	var xhr_object = null; 
     
    	if(window.XMLHttpRequest) 	
    	   	xhr_object = new XMLHttpRequest(); 
    	else if(window.ActiveXObject) 	
    	  	 xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	else { 			
    	 	alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
        	return; 
    	} 
     
    	xhr_object.open('POST', 'scriptx.php', true);
    	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	_data = "p="+arg;
    	xhr_object.send(_data);
     
    	xhr_object.onreadystatechange = function() { 
    	  	if(xhr_object.readyState == 4) {
    			// alert(xhr_object.responseText); // DEBUG MODE
    			document.getElementById('content').innerHTML = xhr_object.responseText;
    		}
    		return xhr_object.readyState;
    	} 
     
    }
    J'ai deux questions pour ce code:

    1 - J'ai dit plus haut que le charset était UTF-8. Je l'ai observé (caractère bizarres, carrés, etc.). Question : est-ce que l'on peut paramétrer un charset quelques part ? Sans doute que non, mais si quelqu'un pouvait le confirmer.

    2 - Dans la ligne

    xhr_object.open('POST', 'scriptx.php', true);

    j'ai essayé de mettre une requête de type 'GET' à la place de 'POST'. Cela ne fonctionne pas. J'ai bien vérifié en listant tout les paramètres avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        while (list($var, $value) = each($_REQUEST)) {
            echo $var . " | " . $value;
            echo "<br>";
        }

    dans le script PHP.

    Il y a surement un moyen de faire une requête GET à la place d'un POST.

Discussions similaires

  1. Ajout de nouvelle DIV en ajax avec Jquery
    Par thewind1 dans le forum jQuery
    Réponses: 2
    Dernier message: 10/03/2009, 12h24
  2. [JQuery]FCK editor en ajax avec Jquery
    Par dembroski dans le forum jQuery
    Réponses: 1
    Dernier message: 10/09/2008, 22h55
  3. [JQuery] Requête ajax avec jQuery
    Par ApheX2 dans le forum jQuery
    Réponses: 3
    Dernier message: 28/08/2008, 22h40
  4. ajax avec jquery
    Par artotal dans le forum jQuery
    Réponses: 14
    Dernier message: 20/07/2008, 22h26

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