begin process at 2010 03 21 10:31:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

Framework

 > 

Ajax

 > 

pb de post dans un ajax à cause des accents


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb de post dans un ajax à cause des accents

jeudi 18 décembre 2008 à 00:55:05 | pb de post dans un ajax à cause des accents

ludovicanceaux

Membre Club
Salut à tous,

voilà, j'essaye de faire une requète ajax en post avec un textarea, les données saisi dedans sont de ce style :
Production:
    Bois:    3000     Par heure
    Terre:    3600     Par heure
    Fer:    3000     Par heure
    Céréales:    1165     Par heure
Troupes:
     1    Héros
     7    Légionnaires
     2332    Prétoriens
     163    Impériens
     219    Equites Legati
     92    Equites Imperatoris
     14    Equites Caesaris
     6    Béliers
     33    Catapultes de feu

j'utilise ce code là :
http://www.captain.at/howto-ajax-form-post-request.php

et en fait dans la page PHP que j'appelle j'essaye de séparer chaque ligne et il faut ke je sache à koi chaque lignes correspond dc j'utilise cette fonction :
ex (la ligne avec les céréales) :
if(strpos($valeur_explode_prod[$i],'Céréales')){//On recherche le champ qui correspond aux céréales
            $production_cece=$valeur_explode_prod[$i];
        }

et en fait ca ne fonctionne pas, car quand je fait caractère par caractère à l'aide de substr  je trouve C&Atil au lieu de normalement C&eacu.

donc j'ai testé le header avec plusieurs encodage "UTF8, windows 1250, etc...., je fais ce qu'ils ont dis en bas du lien que je viens de donner :
if we use "&" character it wont work...
but if we use escape();

var poststr = "mytextarea1=" + escape(encodeURI(
document.getElementById("mytextarea1").value )) +"&mytextarea2=" +
escape(encodeURI( document.getElementById("mytextarea2").value ));

and next in php u use urldecode , it will work good.

Bref je me tourne vers vous, car je ne suis plus quoi faire!!!!



Merci d'avance
jeudi 18 décembre 2008 à 09:48:46 | Re : pb de post dans un ajax à cause des accents

Teclis01

Tiens ça ressemble au dev' d'un jeu :) j'me trompe? ^_^

l'encodage ressemble à de l'utf8...
Ceci dit, on post rarement des chaines on utilises plutôt des entiers...enfin on a tjrs le probleme des accent en cas de login/password avec accent donc!

Pour ce qu'ils te disent, ok mais je vois aucun decode comme ils préconisent... ça peut venir de ça non ?
Ensuite pour le debug... attention à ce que tu vois et vraiment reçoit... j'entend par là que tu devrais loger dans un fichier et non les lire dans le navigateur.

En espérant t'aiguiller un peu...

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro

jeudi 18 décembre 2008 à 09:49:27 | Re : pb de post dans un ajax à cause des accents

Bul3

Membre Club
bonjour,
si on est "cohérent partout", pas de souci avec les accents
et les unescape et autres sont inutiles
perso je fais toujours

bien entendu, les sources sauvées en UTF-8 ( ! )
<META HTTP-EQUIV="CONTENT-TYPE"
            CONTENT="text/html; charset=utf-8">              pour html
header('Content-Type: text/html; charset=utf-8');            pour php
xml.setRequestHeader( "Content-type", "charset=utf-8" );   "pour ajax"


          [mon Site] [M'écrire] Bul         

jeudi 18 décembre 2008 à 12:25:22 | Re : pb de post dans un ajax à cause des accents

ludovicanceaux

Membre Club
Bah donc j'ai tout vérifié ds mon entête head HTML, j'ai bien :
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">

ensuite ma requête ajax est comme ca :
envoieRequete : function(url,parameters,id,loading){//20 mars 2008
            //url = url de la page à appeler
            //id = ID de la div pour la réponse de la page
            //loading = "images/loading.gif"
            if(loading)javascript.getObj(id).innerHTML='<div align="center" style="margin-top:20px"><div style="color:#FF0000">Chargement en cours...</div><img src="'+loading+'" /></div>';
            var xhr_object=null;
            if(window.XMLHttpRequest){
                xhr_object=new XMLHttpRequest();
            }else{
                if(window.ActiveXObject) xhr_object=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xhr_object.open("POST",url,true);
            xhr_object.setRequestHeader("Content-type", "charset=utf-8" );
            xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xhr_object.setRequestHeader("Content-length", parameters);
            xhr_object.setRequestHeader("Connection", "close");
            xhr_object.send(parameters);
            xhr_object.onreadystatechange=function(){
                if(xhr_object.readyState==4){
                    javascript.getObj(id).innerHTML=xhr_object.responseText;
                }
            }
            xhr_object.send(null);
        },

Dc c'est tiré de l'url fourni ci dessus, légerment modifié, car ma requête est dans une classe ^^

et donc dans ma page PHP :
header('Content-Type: text/html; charset=utf-8');
$valeur_post=str_replace(' ','',$_POST['textarea_ajax']);
$valeur_explode_prod=explode('|',$valeur_post);
    for($i=0;$i<count($valeur_explode_prod)-1;$i++){
        if(strpos($valeur_explode_prod[$i],'Céréales')){//On recherche le champ qui correspond aux céréales
            $production_cece=$valeur_explode_prod[$i];
            echo $production_cece;
        }
    }

Mais ca ne marche toujours pas, j'ai toujours des caractères spéciaux, donc mon strpos ne marche pas :(
jeudi 18 décembre 2008 à 12:27:52 | Re : pb de post dans un ajax à cause des accents

ludovicanceaux

Membre Club
Et oui c'est un dev de jeu ^^, c'est un truc pour gérer une alliance en fait, et les données sont tiré d'un copier coller du jeu, puis placé dans un textarea, puis ensuite après l'appui sur le bouton ok, la requète ajax est censé mettre des nouveaux champs input avec les données exact à l'intérieur :)
jeudi 18 décembre 2008 à 12:57:55 | Re : pb de post dans un ajax à cause des accents

ludovicanceaux

Membre Club
Autres choses, quand j'utilise la fonction substr et que je coupe au 2ème caractère, ca me marque "C?" et quand je coupe au 3ème caractère ca me marque "Cé" pour le mot céréales, donc c'est que j'ai un truc qui ne va pas, maintenant le truc c'est que je ne sais pas quoi!!!


jeudi 18 décembre 2008 à 14:22:00 | Re : pb de post dans un ajax à cause des accents

Bul3

Membre Club

ce que je peux te dire... essaye :

html
<HTML    Lang="fr">
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<body><b>
sauver les sources en utf-8<br />
envoyer : <textarea id="env" name="env">àâéèêëïî</textarea>
<button onclick="appel();">Valider</button><br />
reçu    : <textarea id="rec" style="width:80%;height:50%"></textarea>
<script type="text/javascript">
function xmlhttp()    //~~ XMLHTTP ~~
{   var x;
    try           {    x = new XMLHttpRequest();    }
    catch (e)     {    try        { x = new ActiveXObject("Microsoft.XMLHTTP");    }
                        catch (e) { try  { x = new ActiveXObject("Msxml2.XMLHTTP"); }
                                    catch (e) {    x=false;    }
                                  }
                  }
    return x;
}
function appel()    //~~ Appel ~~
{   var xml = xmlhttp();
    if(!xml)
            {   alert("XmlHttpRequest non supporté");    }
    else    {   xml.onreadystatechange = function()
                {   if(xml.readyState == 4)
                    {    if (xml.status == 200)
                                { document.getElementById('rec').value=
                                       xml.responseText; }
                        else    {    document.getElementById('rec').value=
                                       "problème xmlhttprequest";    }
                    }
                }
                try { netscape.security.PrivilegeManager.
                         enablePrivilege('UniversalXPConnect UniversalBrowserAccess');      }
                catch(erreur)    {    }
                xml.open("POST", "Accents_2.php", true);
                xml.setRequestHeader("Content-type",
                                     "application/x-www-form-urlencoded");
                var tmp="env="+document.getElementById('env').value;
                try          { xml.send(tmp);     }
                catch (e)    {    }
            }
}
</script>
</body>
</html>

php
envoi php:éèàù  reçu du javascript :<?php echo $_POST['env']."\n";?>

même sans header, setRequestheader.... ça baigne

          [mon Site] [M'écrire] Bul         

jeudi 18 décembre 2008 à 15:27:35 | Re : pb de post dans un ajax à cause des accents

ludovicanceaux

Membre Club
Chez moi aussi, ca marche quand je l'affiche d'un bloc :), le seul truc qui ne marche pas, c'est quand je veux faire mon tri de chaine, ex: je prends mes 2 premières lettre, et voici ce que ca m'affiche (echo substr($valeur_explode_prod[$i],0,2).'<br>';):
Pr
Bo
Te
Fe
C?

Par contre si j'ecris ca en bloc, ca marche très bien :) :
Production:
Bois:3000Parheure
Terre:3600Parheure
Fer:3000Parheure
Céréales:1165Parheure

Dc moi j'ai besoin de manipuler les chaines à l'intérieur et ca ne marche pas, car je ne sais pas ce qui est derrière le point d'interrogation, snif!!!!
jeudi 18 décembre 2008 à 15:49:25 | Re : pb de post dans un ajax à cause des accents

ludovicanceaux

Membre Club
En fait si tu veux, quand j'ai mon post qui arrive, je fait :

    $valeur_post=str_replace(' ','',$_POST['textarea_ajax']);//Je vire tous les espaces
    $valeur_troupes=explode('Troupes',$valeur_post);//Je sépare la partie production et la partie troupes
    $valeur_prod=$valeur_troupes[0];//Production
    $valeur_troupes=$valeur_troupes[1];//Troupes

    $valeur_explode_prod=explode('|',$valeur_prod); //Auparavent tout les \n ont étaient remplacé par des |
    for($i=0;$i<count($valeur_explode_prod)-1;$i++){
        if(strpos($valeur_explode_prod[$i],'Céréales')){//On recherche le champ qui correspond aux céréales
            $production_cece=$valeur_explode_prod[$i];
            echo $production_cece;
        }
    }

Et là ca ne marche pas car il ne trouve pas le mot céréale avec un accent, il me l'affiche bien, mais il ne le trouve pas quand je fais strpos!!!

Peut etre, ai-je étais plus clair???
jeudi 18 décembre 2008 à 15:57:08 | Re : pb de post dans un ajax à cause des accents

Bul3

Membre Club
euh...
for ($i=0;$i<strlen($_POST['env']);$i++)
echo substr($_POST['env'],$i,1);
sans souci non plus...
          [mon Site] [M'écrire] Bul         


1 2

Cette discussion est classée dans : post, ajax, heure, céréales, equites


Répondre à ce message

Sujets en rapport avec ce message

verifier champ date et heure [ par dreaman ] Bjour,j'ai 3 fonctions qui vérifie mes champs de saisie de "date","heure debut" et "heure fin", mais je voudrai rassemblé les trois...comment puis-je certain caractère non transmis avec POST [ par supers03 ] Bonjour,Lorsque j'envoi  des données via ajax et la méthode POST, le caractère '+' n'est pas transmis, il est remplacé par un espace. J'imagine que c' Méthode POST (AJAX) sous Safari [ par eplanet ] Bonjour à tous, voilà mon problème, j'essaie d'utiliser la méthode POST en AJAX, ca marche bien sous Firefox et sous IE (6 et 7), mais pas sous Safari ajax / php envoi en post de variables a une page php non prise en compte [ par milan78 ] bonjour,j ai un formulaire je recolte les donnees de l utilisateur ensuite les traites avec fonction ajax.udapter afin de l afficher dans une div sans une seul variable post passe avec ajax ? [ par caviar ] Saluté...j'ai un petit problème bizare avec une fonction ajaxen fait un seul des paramètres que je veux envoyer à mon script php passe apparamentsi le Récuperer des données avec $_POST [ par njulio ] Salut à tous, J'ai un problème de récupération de données. Je m'explique: J'ai une page contenant un formulaire, en cliquant sur un bouton de commande Probelem au niveau des DOM en ajax [ par palazar ] Bonjour je developpe une pop up ajax qui apparait via un calendrierQd je souhaite ouvrir une nouvelle popup  relative à une nouvelle date  par dessus Uncauhgt exception: Permission refusée d'appeler la méthode Location.toString [ par satyre ] Bonjour à tous ! Je suis en plein developpement d'un annuaire de liens concernant la Gymnastique. Je boloque sur un formulaire que j'essaye de réalise Crhéer un lien dynamiquement avec ajax [ par caviar ] Saluté ...j'ai un petit problème ...j'ai un js appelé via ajax qui doit créer un lien dans un TD spécifiquej'essayevar lien = '</a& Boucle sur un script Ajax [ par caviar ] Salut à vous ô forts du JS...Je suis une fois de plus en train de galérer... enfin cette fois ci je crois que c'est enfin sur un problème digne de ce


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales