Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AJAX] Changer le contenu d'un DIV

Sans recharger la page, of course'

    7 juillet 2010 à 3:28:09

    Bonjour à tous, :)

    J'ai un petit soucis avec AJAX. En effet, étant très très loin d'être un expert en Javascript, je n'arrive pas à trouver le problème dans un script de ce style, me permettant (logiquement) de changer le contenu d'un DIV en cliquant sur un lien. En effet, je voudrais que mon corps de page change lorsque je clique sur le lien de ma page à appeler, mais évidemment, ça ne marche pas. Voici donc le script JS :

    function write_inside(href) {
    	document.getElementById('corps').innerHTML = page_load(href);
    }
    function page_load(href) {
    	if(window.XMLHttpRequest) {
    		xhr_object = new XMLHttpRequest();
    	}
    	else if(window.ActiveXObject) {
    		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	else {
    		return(false);
    	}
    	xhr_object.open("GET", href, false);
    	xhr_object.send(null);
    	if(xhr_object.readyState == 4) {
    		return(xhr_object.responseText);
    	}
    	else {
    		return(false);
    	}
    }
    


    Mon code xHTML ressemble alors à ceci pour appeler ma fonction :

    <a href="./includes/corps.php?page=inscription" OnClick="write_inside(this.href)">Mon Lien</a>
    


    Et lorsque j'essaie ce code, j'obtiens l'erreur suivante dans la console de Firefox : "la fonction write_inside n'est pas définie"

    Auriez-vous une solution pour un noob du Javascript dans mon genre ?

    Merci d'avance, :D

    Goose.
    • Partager sur Facebook
    • Partager sur Twitter
      7 juillet 2010 à 5:54:06

      Salut.
      Tu utilises le chargement synchrone, ça c'est pas bien (ça bloque le navigateur pendant le temps de la requête). Personne ne met false en 3ème argument.
      Si tu ne mets pas ;return false; à la fin du onclick (tout en minuscule stp), le clic sur le lien te dirigera vers la page.
      Pour t'aider je t'invite à lire ceci : http://www.siteduzero.com/tutoriel-3-1 [...] prequest.html
      Pour l'erreur je ne la comprends pas, je ne vois pas pourquoi la fonction write_inside() serait non définie, sauf faute de frappe.
      • Partager sur Facebook
      • Partager sur Twitter
        7 juillet 2010 à 8:56:30

        Salut c'est :

        return false;
        


        et pas :

        return (false)
        


        A priori c'est le seul souci qu'il y avait ;)
        • Partager sur Facebook
        • Partager sur Twitter
          7 juillet 2010 à 16:56:06

          Les parenthèses son inutiles, mais ça ne provoque pas d'erreur.
          • Partager sur Facebook
          • Partager sur Twitter
            7 juillet 2010 à 16:59:18

            Ah autant pour moi, il me semblait que dans un de mes scripts j'avais rencontre exactement ce souci et que la suppression des parenthèses avait résolu le problème (c'était peut être jQuery qui doit être plus strict a ce niveau...)
            • Partager sur Facebook
            • Partager sur Twitter
              7 juillet 2010 à 18:49:10

              Non. Avec ou sans jQuery, un return ça reste du javascript de base. Mettre une valeur entre parenthèse ne change en rien cette valeur.
              • Partager sur Facebook
              • Partager sur Twitter

              [AJAX] Changer le contenu d'un DIV

              × 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