Rafraichir div avec Select méthode POST

Résolu/Fermé
gabi26 Messages postés 38 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 12 avril 2009 - 24 mars 2009 à 19:40
gabi26 Messages postés 38 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 12 avril 2009 - 29 mars 2009 à 15:13
Bonjour,

mon dernier message n'a pas eu grand succès. Dommage! Suis toujours autant bloquée...
D'autres soucis sur mon site, parmi...:

J'utilise un select pour appeler différentes pages php. Le script utilisé est en méthode POST et je ne sais pas comment faire avec AJAX pour rafraichir le div qui reçoit le texte sans recharger toute la page.
J'y arrive en méthode GET au moyen de liens inclus dans un menu. Mais avec le select je suis coincée. Aucune piste et je cherche depuis plusieurs jours.Voici la forme élémentaire de mon sélect:

<form action="#" method="POST">
<fieldset>
<legend>Thème</legend>
<label for="nom">Rubriques</label>
<select id="nom" onChange="location.href='index.php?page='+document.getElementById('nom').options[document.getElementById

('nom').selectedIndex].value">
<option value="1" >-------------</option>
<option value="rubrique1" >Rubrique1</option>
<option value="rubrique2">Rubrique2</option>
<option value="rubrique3" >Rubrique3</option>
</select>
</fieldset>
</form>

Pour info voici le script ajax.js:

function envoieRequete(url,id)
{
var xhr_object = null;
var position = id;
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function(){
if ( xhr_object.readyState == 4 )
{
// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
document.getElementById(position).innerHTML = xhr_object.responseText;
}
}
// dans le cas du get
xhr_object.send(null);

}


Qu'est-ce que je suis censée écrire et y aura-t-il conflit avec mon ajax.js qui appelle d'autres pages en méthode GET? Sinon est-ce que je peux le transformer pour le passer en GET?
Merci de votre aide!
A voir également:

1 réponse

gabi26 Messages postés 38 Date d'inscription jeudi 19 mars 2009 Statut Membre Dernière intervention 12 avril 2009 1
29 mars 2009 à 15:13
Finalement!

Après de longues nuits sans sommeil je suis parvenue à ce que je voulais et pour ceux que ça intéressent voici les codes:
voirlist.js

function voirList(el) {
   
var xhr;
try { xhr = new XMLHttpRequest(); }
catch (e) {
xhr = new ActiveXObject(Microsoft.XMLHTTP);
             }  
 xhr.onreadystatechange = function () {
if (xhr.readyState == 4)
if (xhr.status == 200)
document.getElementById("mydiv").innerHTML=xhr.responseText;
        else
alert(xhr.status);
}

xhr.open('POST', 'ajax.php', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-
urlencoded");
 xhr.send('ajax=' + el.options[el.selectedIndex].value);
      }



ajax.php
<?php 

if ( isset($_POST['ajax']) ) {
 switch ($_POST['ajax'] ){

case'page 1':include('p1.php');
break;

case'page 2':include('p2.php');
break;

case'page 3':include('p3.php');
break;

case'page 4':include('p4.php');
break;

case'page 5':include('p5.php');
break;

default:include ('p1.php');
break;
   }
   }
?>


index.php
entre les balises <body> et </body> ajouter:
<form action='#' >

  <fieldset>

    <legend>Theme</legend>

    <label for="list">Rubriques</label>
<select id="list" onChange="voirList(this)">

<option value="1" >-------------</option>
 <option value="p1" >Page 1</option>
 <option value="p2" >Page 2</option>
  <option value="p3" >Page 3</option>
  <option value="p4" >Page 4</option>
  <option value="p5" >Page 5</option>

</select>

</fieldset>

</form>

et le div qui recevra le texte:
<div id="mydiv"></div>

Je crois qu'il n'y a pas d'erreurs. Pas si compliqué mais j'ai quand même cherché longtemps et finalement je l'ai monté à ma sauce. Le div est rechargé sans recharger la page en méthode POST avec ce satané bazar de SELECT! (Ca marche sous FF. Pas testé sous IE.). Bonne journée!
1