Partage
  • Partager sur Facebook
  • Partager sur Twitter

Impossible d'appeler 2 fois la même fonction!

XmlHttpRequest

Sujet résolu
    25 février 2009 à 10:34:46

    Salut ;)

    Petit souci: Dans le cadre d'un site web, j'ai une fonction javascript qui permet de rechercher des membres, et qui envoie le résultat par xmlHttprequest.
    Jusque là d'accord, voici le code:

    <form name='search' method='post' onSubmit="javascript:recherche('reponse');return false;">
    <p>
    <input type='text' name='recherche' />
    <a href='#' OnClick="javascript:recherche('reponse');">Lancer la recherche</a><br />
    <br />
    <span id="reponse"></span>
    </p>
    </form>
    


    Le résultat est envoyé dans le span "reponse"

    Souci: Ce code marche quand on clique sut Lancer la recherche sans souci, mais pour le onSubmit, il ne veut rien entendre, tout marche, sauf la fonction recherche, mon débogueur js me dit qu'elle n'existe pas ...
    Avec d'autres fonctions, ca marche, et le seul moyen que j'ai trouvé pour la faire marcher:

    Copier coller la fonction recherche, et l'appeler recherche_bis, dans ce cas, ca fonctionne! oO

    C'est pas vraiment propre, comment cela se fait-il?

    Merci bien!
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      25 février 2009 à 14:50:59

      il n'y a pas de majuscule à onsubmit et on ne met pas "javascript:" dedans.

      Sinon tu devrait nous donner ta fonction recherche.
      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2009 à 19:00:59

        Rien à voir avec la fonction, même quand je mets un simple alert('test') dans la fonction, même resultat ...
        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2009 à 19:49:12

          Ce qu'il a dit est vrai (Balise en minuscules, utilisation des quotes au lieux de ' et PAS de javascript: )

          Ensuite, tu as dans ton form un name="recherche" => D'où bug
          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2009 à 19:51:31

            j'ai corrigé les erreurs de forme, la fonction ne change rien:


            function recherche(id)
            {
             
            
            	question = document.search['recherche'].value;
                
            	if(question=='' || question==' ')
            	{
            		alert('Veuillez renseigner un mot dans le champ de recherche.');
            		exit;
            	}
            	
            	var req = null;
            	if (window.XMLHttpRequest)
            	{
            		req = new XMLHttpRequest();
            
            	} 
            	else if (window.ActiveXObject) 
            	{
            		try {
            			req = new ActiveXObject("Msxml2.XMLHTTP");
            		} catch (e)
            		{
            			try {
            				req = new ActiveXObject("Microsoft.XMLHTTP");
            			} catch (e) {}
            		}
            	}
            	document.getElementById(id).innerHTML = "<img src='http://argetlam.u7n.org/Design/images/interface/turnable.gif' /><em>Patientez ...</em>";
            	req.onreadystatechange = function()
            	{ 
            			
            		if(req.readyState == 4)
            		{
            			if(req.status == 200)
            			{
            				document.getElementById(id).innerHTML=req.responseText;
            			}	
            			else	
            			{
            				document.getElementById(id).innerHTML="Erreur";
            			}	
            		} 
            	};
            
            	req.open("POST", "rechercher-amisbeta.php?question="+question+"", true); 
            	req.send(null);
            	
                
                
            }
            


            Si je remplace ça par n'importe quoi, même résultat !



            Edit: ca ne marche pas qu'avec le formulaire, autrement, avec un autre lien, ça marche ...
            • Partager sur Facebook
            • Partager sur Twitter
              25 février 2009 à 19:52:05

              J'ai edit mon post entre temps.

              Citation : Tiller

              Ce qu'il a dit est vrai (Balise en minuscules, utilisation des quotes au lieux de ' et PAS de javascript: )

              Ensuite, tu as dans ton form un name="recherche" => D'où bug



              Et le prochaine fois, il existe des balises code-- Grilled
              • Partager sur Facebook
              • Partager sur Twitter
                25 février 2009 à 19:55:47

                Oui pardon :p
                En elenvant l'attribut name pas de changement ...
                • Partager sur Facebook
                • Partager sur Twitter
                  25 février 2009 à 19:57:09

                  Si tu vires le return false, et que tu fais:
                  return recherche(..);

                  Et que dans recherche tu met un return false; ?

                  Edit: Tu a enlever l'attribut name, mais a tu corrigé ta fonction recherche après en fonction?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 février 2009 à 19:59:15

                    Non, pas de changement, j'ai déja essayé en remplacant le recherche(...) par un bête alert('machin') et la ça marche ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 février 2009 à 20:08:32

                      Oui ^^ J'ai enlevé et remplacé par un id dans le champ texte !
                      Même résultat, ce qui me dégoute c'est que la même fonction recherche_bis marche >_< aucune différence de code, on dirait juste qu'il ne connait pas la fonction, je vais essayer de la placer dans des balises script
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 février 2009 à 20:13:35

                        Bon, pas de changement quand je mets directement dans la page, voici mon code : (moteur de templates inside)

                        {include file="haut.tpl"}
                        
                        			<div class="cat">
                        				<h2>Recherche:</h2>
                        				<p>
                        				<form method="post" onsubmit="recherche_bis('reponse');return false;">
                        				<p>
                        					<input type="text" id="recherche" /> <a href="#" OnClick="recherche('reponse');">Lancer la recherche</a><br />
                        					<span id="reponse"></span>
                        				</p>
                        				</form>
                        				<br>
                        				
                        				</p>
                        				
                        			</div>
                        {include file="bas.tpl"}
                        


                        Dans haut.tpl, j'ai:
                        <script type="text/javascript" src="/Design/scripts/fonctions.js"></script>
                        

                        Mauvaise forme?

                        Et vous avez déja ma fonction ;)


                        Edit: Dois y aller, merci pour l'aide, je reviens demain vous dire comment ça se passe ;)
                        Bonne soirée!
                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 février 2009 à 20:23:38

                          J'aimerais reavoir la fonction, car si tu as mis un id, tu l'as modifié donc erreur potentielle
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 février 2009 à 11:09:37

                            Salut ;)
                            j'ai WebDevelopper, qui me dit mes erreurs javascript, et même quand la fonction est très simple, genre alert('machin') , même résultat!

                            Apparement ca vient du nom de la fonction, en employant recherche_bis au lieu de recherche, ça marche, peut être un conflit entre une fonction js et ma fonction? Mais ca m'etonnerait, en attendant, sujet résolu!

                            Merci à vous ;)
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Impossible d'appeler 2 fois la même fonction!

                            × 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