erreur javascript "objet attendu"

erreur javascript "objet attendu" - HTML/CSS - Programmation

Marsh Posté le 15-07-2008 à 10:14:12    

Bonjour,  
 
actuellement, je bosse en php/javascript/html. j'ai donc tout d'abord ma page avec un select qui, dès qu'un element est coché, affiche un 2eme select en dessous. ce que je veux faire ensuite, c'est qu'a partir de ce 2eme select, afficher en dessous les elements selectionné a l'aide du onChange.
 
pour cela, j'utilise une fonction ajax qui est file(fichier) et que j'ai déja utilisé pour passer du 1er au 2eme select cependant, à present, il me met une erreur javacript me disant "objet attendu" et je ne sais pas d'ou cela vient. voici le code :
 
<?
include("fonctions.php" );
header("Content-type: text/html; charset=iso-8859-15" );
echo "<link rel='stylesheet' href='./styles/flu.css' type='text/css' />";
 
?>
<SCRIPT Language = "Javascript">
function file(fichier)
{
     if(window.XMLHttpRequest) // FIREFOX
          xhr_object = new XMLHttpRequest();
     else if(window.ActiveXObject) // IE
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
     else
          return(false);
     xhr_object.open("GET", fichier, false);
     xhr_object.send(null);
     if(xhr_object.readyState == 4) return(xhr_object.responseText);
     else return(false);
}
 
function selection_variables(id,syn_id)
{
   
   texte = file('./selection_variables.php?id='+escape( id ) );
   window.parent.opener.parent='CreationCompo.php?syn_id='+syn_id;
   document.getElementById('selection').innerHTML = texte;
     
}
</script>
<?
$id = $_GET['id'];
$syn_id = $_GET['syn_id'];
//echo $syn_id;
$variables = Requete_db("SELECT vsrc_id, vsrc_nom FROM ts_vsrc where vsrc_src_id=$id","graphes" );
 
echo "<select name='variables' STYLE='width:250' id='lst_variable' onChange='selection_variables(this.value,".$syn_id." )' size='5'>";
 
foreach($variables as $value)
        {
        $vsrc_id = $value[0];
        $vsrc_nom = $value[1];
 
        echo "<option class='orange2' value='$value[0]' label='$value[1]'></option>";  
       }
       
echo "</select>";
?>
 
merci de vos réponses ;)


Message édité par capri36 le 15-07-2008 à 10:21:47
Reply

Marsh Posté le 15-07-2008 à 10:14:12   

Reply

Marsh Posté le 15-07-2008 à 10:32:08    

Citation :

il me met une erreur javacript me disant "objet attendu" et je ne sais pas d'ou cela vient.


 
Il doit y avoir un numéro de ligne avec ce message.
 
Montre nous plutot le code Html généré (et pas le source Php)

Reply

Marsh Posté le 15-07-2008 à 10:36:54    

oui mais le truc, c'est que mon erreur pointe sur un "<link rel="stylesheet" href="./styles/synop.css" type="text/css" />", rien a voir avec mon javascript et je travaille sur plusieurs pages, page php, page html et une 3eme php qui appel mon 2eme select (qui est dans mon premier post)

Reply

Marsh Posté le 15-07-2008 à 11:01:14    

voici mon code html :  
 
<SCRIPT Language = "Javascript">
 
function file(fichier)
{
     if(window.XMLHttpRequest) // FIREFOX
          xhr_object = new XMLHttpRequest();
     else if(window.ActiveXObject) // IE
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
     else
          return(false);
     xhr_object.open("GET", fichier, false);
     xhr_object.send(null);
     if(xhr_object.readyState == 4) return(xhr_object.responseText);
     else return(false);
}
 
function charger_variables(id,syn_id)
{
  texte = file('./Charger_variables.php?id='+escape( id )+'&syn_id='+syn_id );
  document.getElementById('connex').innerHTML = texte;
}
</script>
<html>
  <head>
    <link rel="stylesheet" href="./styles/synop.css" type="text/css" />
    <link rel="icon" href="./images/aic.ico" type="image/x-icon">
    <link rel="SHORTCUT ICON" href="./images/aic.ico" type="image/x-icon">
    <title> Gestion des synoptiques </title>
  </head>
  <body>
  <form name="add" action="" method="POST">
    <table width="100%" height="10%" border="1" class="entete">        <tr>
        <td>
        Choix de connexion :
        </td>
        <td width="40%" align="center">
         <select name="connexion" STYLE='width:150' id="lst_modele" onChange="charger_variables(this.value,11)">
          <option class='orange2' value="0">&lt;type de connexion&gt;</option>
          <option class='orange1' value="1">spc00002 - wwuser</option><option class='orange2' value="3">localhost - root</option>
      </select>
        </td>
        <td align="center">
        <a href="" target="_parent">Ajouter une connexion</a>  
        </td>
        </tr>
        <tr>
        <td>
        Choix de variables :
        </td>
              <td align="center" height="20%" id="connex">
        </td>
        <td align="center">
        <a href="" target="_parent">Ajouter une variable</a>  
        </td>
      </tr>
      <tr>
      <td colspan="3" align="center">
      Liste des variables sélectionnées :
      </td>
      </tr>
      <tr bgcolor="#D0FFFF">
      <td align="center" width="100%" height="30%" colspan="3">
      <div id='selection'></div>
      -  vsrc_nom   --  description   --  <img src="./images/supp.png">
      </td>
      </tr>
      <tr>
      <td colspan="3" align="center">
      <a href="" target="_parent">Créer les variables</a>  
      </td>
      </tr>
      </table>
      <table class="entete" width="100%" height="7%">
      <tr>
      <td>
      <td width="50%" align="center">
      <a href="" target="_parent">Valider</a>
      </td>
      <td width="50%" align="center">
      <a href="" target="_parent">Retour</a>
      </td>
      </tr>
    </table>
    </form>
  </body>
</html>
 
et mon script précedent correpond au "Charger_variables.php"

Reply

Marsh Posté le 15-07-2008 à 11:53:37    

Code :
  1. <select name="connexion" STYLE='width:150' id="lst_modele" onChange="charger_variables(this.value,11)">
 

L'élément select n'a pas de value.

 

Dans le cas des select simples, tu peux accéder à l'option choisie via l'attribut selectedindex

 

essaye ça :

Code :
  1. onChange="charger_variables(this.options[this.selectedindex].value,11)"


Message édité par Bidem le 15-07-2008 à 11:54:01
Reply

Marsh Posté le 16-07-2008 à 00:02:18    

euh si ca marche tres bien le onchange prend la value de l option choisie
par contre justre pour la forme c est
<script type="text/javascript">
et ca doit etre a l interieur du header
pareil pour ta css en echo

 

pour ton probleme c est qu une fonction xhr ne retourne rien donc file est vide, donc texte est vide donc tu fais un undefined sur ton innerHTML
tu dois definir une fonction qui se declenchera quand ta requete sera terminée (au moment ou le onchange se produit ta requete n a pas encore été éxécutée)
c est cette ligne qui est fausse
if(xhr_object.readyState == 4) return(xhr_object.responseText);
au moment de la requete elle est a zero (ou un je sais plus :o) et tu n as personne pour ecouter quand ca change (d ou la fonction sur le onreadystatechange dans mon exemple)

 

edit:
oops le lien qui va bien :D
http://www.xul.fr/xml-ajax.html#ajax-lire-texte


Message édité par mIRROR le 16-07-2008 à 00:06:18

---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed