Envoyer un champ input text via ajax pour tchat

iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009 - 11 avril 2009 à 22:53
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009 - 14 avril 2009 à 01:00
ça fait plusieurs jours que je galere avec ce truc là qui je suis sur est simple pour vous

donc pour un tchat simple live en ajax , j ' ai un champ input text etc que je veux envoyer dans la div qui se met à jour via ajax en post .

petite precison je ne connais absolument rien en java scrip ajax et aute ( seulement un peu de php mysql )

pour cela j ' ai recuperer le script sur la page http://www.javascriptfr.com/codes/CHARGER-PAGE-PHP-OU-HTML-DANS-DIV_37447.aspx.           qui me parait etre approrié .

par contre soit le script ne fonctionne pas correctement soit je fais n ' importe quoi evidement , je pencherai plutot pour la 2eme solution

en fait en apllicant ce qui est indiqué dans les commentaires du dit script je ne reçois pas ma variable du input mais ce ui designe la variable j ' ai essayé des centaines de choses , mais rien à faire par contre je sais que je suis tout pret , mais là vraiment j ' en peux plus , pourtant je suis pas du style a abandonné ....

un peu de code pour vous donner une idée :

voilà le form :

<form id="form" name="form" method='POST' action="" >
                                   
                                   
                                   
                                                                       
                                [javascript:ViewContent('page', 'page.php', 'POST', 'shbox_text=+content1+&sent=yes&submit=+content3+'); envoyer]
</form>

ensuite ma div s ' actualise et  en voici le code :

if($_POST["sent"]=="yes") {
$message=trim($_POST["shbox_text"]);

echo $message;

}
else echo "no message";
jusque là le div etc tout est nickel chrome , je me suis deja epaté d ' y etre arrivé .

le probleme c ' est que au lieu de m ' afficher $message qui contient le texte tapé dans le input , ça m ' affiche content1

j ' ai vus dans le forum je ne sais plus ou à propos de ce script qu ' il fallait en fait syntaxer les variables avec des " donc j 'ai aussi essayer :
[javascript:ViewContent('page', 'page.php', 'POST',
'shbox_text= envoyer]

mais resultat similaire pourtant je suis certain que le reste fonctionne le div s ' actualiser mais le passage de variable ne se fait pas .

je suis vraiment archi royalement null et j ' ai aucune notion de javascript ou ajax , j ' ai seulement plein de bonne volonté mais çela ne suffit pas toujours .

si une personne bienveillante pouvait m ' aider , ça serait vraiment super sympa .

merci d ' avance pour votre aide .

@ +++

12 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
12 avril 2009 à 08:51
Bonjour,
ben dèjà :
...'shbox_text='+content1+'&sent=yes&submit='+content3+');" ...
sinon, c'est le texte contentl qui est envoyé, pas le contenu

pas regardé le reste

>>j ' ai aucune notion de javascript ou ajax
il serait temps de t'y mettre si tu veux utiliser !
( ajax c'est du javascript !! 10 lignes maxi )

Cordialement
0
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
12 avril 2009 à 11:09
bonjour bul3

je viens de tester ce que tu m ' as dit mais alors là plus rien ne marche si je met les  " ' " .

je me demande si il n ' y aurait pas un probleme dans la fonction voir lien ci dessus 
0
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
12 avril 2009 à 11:47
ps oui je sais que AJAX  ' c 'est du javascript

c ' est ce que je fais ,  je m ' y mets au debut c ' est pas evident .

la syntaxe decrite dans l ' utilisation de la fonction est bonne avec du texte mais pas avec les variables !!

serait il possible d ' avoir un exemple complet et fonctionnel quelque part ???
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
12 avril 2009 à 13:30
>>plus rien ne marche si je met les  " ' " .
erreur de syntaxe probablement
mais si tu mets 'shbox_text="+content1+"&sen
ça ne peut pas marcher
'shbox_text='+content1+'&sen...
pas de raisons que cela ne fonctionne pas ( sauf la fonction appelée qu'on n'a pas, mais bon... )
>>avoir un exemple complet et fonctionnel
ce n'est pas un problème ajax !
c'est un problème de syntaxe en javascript !

d'ailleurs tu dois avoir une erreur de signalée
Navigateurs |Quelques Explications |----

Chrome, contrôler page actuelle / Options pour développeurs
/ Console Javascript, ----

FireFox, Outils / Console d'erreurs
et mieux : télécharger FireBug, ----

Internet
Explorer, activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS, ----

K-Meleon, Outils / Console d'erreurs, ----

Opera, utils / Asole d'erreurs, ----

Safari, Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
13 avril 2009 à 04:56
merci pour le debugeur , faut encore que j ' apprenne à m ' en servir

si tu pouvais me guider un peu dans un premier temps .

voici la fonction que j ' utilise :

<script type= "text/javascript" language="javascript">
        function ObjectDiv( div , content )
        {
                if ( document.getElementById )
                {
                        document.getElementById( div ).innerHTML = content;
                }
                        else
                {
                        if ( document.layers )
                        {
                                document.div.innerHTML = content;
                        }
                                else
                        {
                                document.all.div.innerHTML = content;
                        }
                }
        }
       
        function Goto( FILE , METHOD , DATA , div )
        {
                if( METHOD == 'GET' && DATA != null )
                {
                        FILE += '?' + DATA;
                        DATA = null;
                }

                var httpRequestM = null;  

                        if( window.XMLHttpRequest )
                        {   // Firefox  
                            httpRequestM = new XMLHttpRequest();
                        }
                        else if( window.ActiveXObject )
                        {   // Internet Explorer  
                            httpRequestM = new ActiveXObject( "Microsoft.XMLHTTP" );
                        }
                        else
                        {   // XMLHttpRequest non supporté par le navigateur  
                            return "Votre navigateur ne supporte pas les objets XMLHTTPRequest...";
                        }  
  
                                httpRequestM.open( METHOD , FILE , true );
                                httpRequestM.onreadystatechange = function()
                                {  
                                        if( httpRequestM.readyState == 4 )
                                        {
                                                ObjectDiv( div , httpRequestM.responseText );
                                        }
                                }
               
                        if( METHOD  == 'POST' )  
                        {
                                httpRequestM.setRequestHeader( "Content-type" , "application/x-www-form-urlencoded" );
                        }

                 httpRequestM.send( DATA );  
        }

        function ViewContent( div , href , method , data )
        {
                var wait = "
" +
                           " Chargement en cours.....

" +
                           "" +
                           "
";

                ObjectDiv( div , wait );
                Goto( href , method , data , div );
        }
</script>
<!--
Dorénavent vous aurait juste a inclure ce fichier Javascript dans vos pages,
Et vous pourais utilisé la technologie Ajax,
Vous pourez l'activer a partir d'un simple lien, ou d'une image ( onclick )...
Vous pouvez géré vos requete quelles soient Post ou Get

   [  Voici un exemple pour GET ( si vous ne souhaiter pas mettre de variable )  ] :

        
Initial CONTENT

         [javascript:ViewContent( 'laDiv' , 'votre_page.html' , 'GET' , null ); ]

            REQUETE EFFECTUER VERS : votre_page.html

   [  Voici un exemple pour GET ( si vous souhaiter mettre des variables )  ] :

        
Initial CONTENT

         [javascript:ViewContent( 'laDiv' , 'votre_page.html' , 'GET' , 'variable1 =content1&variable2=content2&' ); ]

            REQUETE EFFECTUER VERS : votre_page.html?variable1=content1&variable2=content2&

   [  Voici un exemple pour POST                                            ] :

        
Initial CONTENT

         [javascript:ViewContent( 'laDiv' , 'votre_page.php' , 'POST' , 'variable1=content1&variable2=content2&' ); ]

            REQUETE EFFECTUER VERS : votre_page.php
            Avec les variables suivantes : $_POST[ 'variable1' ] = 'content1'; $_POST[ 'variable2' ] = 'content2';
     
//-->

encore merci [auteur/BUL3/812304.aspx Bul3]de  te pencher sur mon probleme .

 si je modifife la syntaxe du lien en ajoutant des ' ou des " ( par paires )  il ne marche plus .
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
13 avril 2009 à 08:43
Bonjour,

bah... tu restes sur quasi la même erreur....
[javascript:ViewContent( 'laDiv' , 'votre_page.html' , 'GET'
, 'variable1= content1&variable2=content2&' ); ]
mieux :
[javascript: void( ViewContent( 'laDiv' , 'votre_page.html' , 'GET'
, 'variable1 ='+content1+'&variable2='+content2)); lien]

et généralement sur un lien, il faut utiliser void ou faire un return false
pas regardé le reste

si c'est en GET, faudrait voir la fonction, car peut-être manque-t-il
un ? en tête des paramètres ( s'il n'est pas mis dans ViewContent )
0
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
13 avril 2009 à 10:38
en mettant le lien sous la syntaxe que tu m ' as donné , voilà les resultats que j ' obtiens dans firebug :

Permission refusée d'appeler la méthode Location.toString

undefined

content1 is not defined

javascript:void(ViewContent('page',%20'shoutbox2.php',%20'POST',%20'shbox_text='+content1+'&sent='+content2+''));()()javascri...nt2+'')); (ligne 1)

javascript:void(ViewContent('page',%20's..._text='+content1+'&sent='+content2+''));
javascri...nt2+'')); (ligne 1)

uncaught
exception: [Exception... "Component returned failure code: 0x8000ffff
(NS_ERROR_UNEXPECTED) [nsIPrefBranch.getCharPref]" nsresult:
"0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame ::
chrome://utorrent/content/prefs.js :: anonymous :: line 41" data: no]

javascript:void(ViewContent('page',%20'shoutbox2.php',%20'POST',%20'shbox_text='+content1+'&sent='+content2+''));()()
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
13 avril 2009 à 11:02
>>content1 is not defined
eh ben alors ?!?
met dans cette variable ce que tu veux envoyer
comme valeur pour shbox_text
si cette variable n'est pas initilalisée,
elle est indéfinie
si tu mets dans les guillemets, ce sera content1
qui serait envoyé
'variable1=content1&variable2=content2'
en php tu récupères 'content1' et 'content2'

var content1='tata';
var content2='titi';
'variable1='+content1+'&variable2='+content2
en php tu récupères 'tata' et 'titi'

@+
0
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
13 avril 2009 à 11:42
le principe c ' est justement que je ne sais pas ce qu ' il y a dedans puisque chaque membre poste ce qu ' il a envie dans le  tchat ( shoutbox ) d ' ou l ' interet de recupere la variable postée apres la xhr .....

le probleme vient peut etre de mon input alors ...

ce que je ne comprends pas c ' est que j ' utilise la meme fontion en get pour supprimer les messages incorrect et là , ça marche comme sur des roulettes ...

il doit bien y avoir un moyen de recuperer le message des membres apres la XHR pour que je puisse enregistrer leur message ou du mloins l ' afficher .

le tout c ' est de pouvoir la recuperer pour ensuite la traiter ....

 là je commence vraiment a desperer plus d ' une semaine sur ce truc là mais ce qui me gene le plus personnellement dans ce message de firebug , c' est plutot la premiere ligne et non pas le fait  que la variable ne soit pas initialisée . ( Permission refusée d'appeler la méthode Location.toString )

on dirait que le serveur ne veut pas que javascript recupere la variable ...

ce qui engendre les autres erreurs ...mais comme je suis un newbie je ne m ' aventurerais pas plus loin et je ne suis pas sur ce sont  des suppositions ...
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
13 avril 2009 à 11:53
>>le principe c ' est justement que je ne sais pas ce qu ' il y a
>>dedans puisque chaque membre poste ce qu ' il a envie
????? met ce que l'utilisateur saisit ??? non ????
0
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
13 avril 2009 à 18:47
ben la justement je ne sais pas comment faire du tout je suis completement perdu ...
0
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
14 avril 2009 à 01:00
je viens d ' essayer avec la class prototype je n ' arrive pas à faire fonctionner correctement mais là au moins les variables sont transmises , ce qui me fait penser que le probleme vient de la fonction javascript ....
0
Rejoignez-nous