[Ajax] transmission de données
Arkha
-
Arkha -
Arkha -
Bonjour,
C'est toujours la même histoire, impossible de passer des caractères spéciaux ou accent avec Ajax, et pourtant j'ai tout essayé!, des fonctions d'encodage, différents types headers et de balise meta ISO et UTF-8, mais rien y fait! il ne veut jamais passer mes accents...
Quelque soit la méthode employé lorsque je veux sauvegarder un "é", la base de données le sauvegarde de la façon "%E3%A9" au lieu de "%C3%A9".
J'ai également essayé des fonctions de type "htmlentities" en php mais là encore sans succès... Je finis toujours avec des "ã©" ou "ã©" dans la base...
Je suis sur que c'est tout bête, mais pour le moment ça me bloque vraiment :)
Merci à celui qui saura m'aider.
C'est toujours la même histoire, impossible de passer des caractères spéciaux ou accent avec Ajax, et pourtant j'ai tout essayé!, des fonctions d'encodage, différents types headers et de balise meta ISO et UTF-8, mais rien y fait! il ne veut jamais passer mes accents...
//Javascript
function svg(id) {
var val = document.getElementById(id).value;
val = encodeURI(val);
var data = id+"="+val;
var xhr = getXhr();
xhr.onreadystatechange = function(){
//On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
alert (xhr.responseText);
}
}
xhr.open("POST", "request/saving.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(data);
}
//php en partie, $val correspond à la valeur du $_POST
$val = rawurlencode($val);
//même en essayant n'importe quels autres encodages de ce type rien y fait
$query = "INSERT INTO donnee VALUES ('$d',$h,$m,'$val')";
mysql_query($query);
Quelque soit la méthode employé lorsque je veux sauvegarder un "é", la base de données le sauvegarde de la façon "%E3%A9" au lieu de "%C3%A9".
J'ai également essayé des fonctions de type "htmlentities" en php mais là encore sans succès... Je finis toujours avec des "ã©" ou "ã©" dans la base...
Je suis sur que c'est tout bête, mais pour le moment ça me bloque vraiment :)
Merci à celui qui saura m'aider.
A voir également:
- [Ajax] transmission de données
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Trier des données excel - Guide
- Sauvegarde des données - Guide
- Données personnelles - Accueil - Windows
6 réponses
le problème se situe a quel moment ?
pendant la transmission ajax ? (navigateur -> serveur)
ou pendant l'enregistrement sql (serveur -> sql)
pendant la transmission ajax ? (navigateur -> serveur)
ou pendant l'enregistrement sql (serveur -> sql)
Lors de la transmission ajax avec encodeURI si je place un alert de val juste en dessous, il est affiché avec le bon encodage.
Par contre coté traitement PHP la valeur sauvegardée dans la base de donnée est:
- si je ne traite pas l'information (aucun encodage nul part), la valeur dans la base est "ã©" .
- "%E3%A9" si j'utilise urldecode() sans utiliser d'encodage coté AJAX .
- si j'utilise un encodage coté AJAX, je n'ai pas de réponse avec reponseText si j'utilise urldecode() coté php, la valeur est tout de même sauvgardée dans la base sous la forme "%E3%A9".
- si j'utilise un encodage coté AJAX, j'ai une réponse avec reponseText si j'utilise urlencode() coté php, la réponse et la valeur sauvegardé dans la base est encore une fois "%E3%A9".
Je suppose donc que ça surviens lors de l'enregistrement sql même je n'en suis pas vraiment sûr...
Par contre coté traitement PHP la valeur sauvegardée dans la base de donnée est:
- si je ne traite pas l'information (aucun encodage nul part), la valeur dans la base est "ã©" .
- "%E3%A9" si j'utilise urldecode() sans utiliser d'encodage coté AJAX .
- si j'utilise un encodage coté AJAX, je n'ai pas de réponse avec reponseText si j'utilise urldecode() coté php, la valeur est tout de même sauvgardée dans la base sous la forme "%E3%A9".
- si j'utilise un encodage coté AJAX, j'ai une réponse avec reponseText si j'utilise urlencode() coté php, la réponse et la valeur sauvegardé dans la base est encore une fois "%E3%A9".
Je suppose donc que ça surviens lors de l'enregistrement sql même je n'en suis pas vraiment sûr...
Egalement,
En utilisant une fonction javascript qui fait le même effet que Htmlentities pour remplacer les caractères concernés, je n'ai aucune donnée transmise lors du traitement en PHP...
En utilisant une fonction javascript qui fait le même effet que Htmlentities pour remplacer les caractères concernés, je n'ai aucune donnée transmise lors du traitement en PHP...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sinon transforme les caracteres speciaux par un genre de code et tu fé des str_replace (un peu barbare mais bon ca devrait fonctionner)
Problème résolu avec l'utilisation de la fonction javascript "escape" lors du l'enregistrement des données et de la fonction php "utf8_encode()" lors du traitement des données (récupération uniquement) via php =)
//code JAVASCRIPT
function svg(id) {
var val = document.getElementById(id).value;
val = escape(val);
alert (val);
var data = id+"="+val;
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
alert (xhr.responseText);
}
}
xhr.open("POST", "request/saving.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(data);
}
//code PHP
if (mysql_num_rows($result) == 1) {
echo utf8_encode(mysql_result($result,0));
}