Bonjour a tous !
Je suis entrain de développer une application visant a gérer une Base de Données et j'ai un souci avec innerhtml.
l'application est grande mais mon souci concerne juste un petit bout de code qui me fais m'arracher les cheveux depuis quelques jours
En bref j'ai 3 tables : objet, type et lieu
Sur l'interface de l'application, l'utilisateur sélectionne une table avec un bouton puis choisis une action(rechercher/ajouter/modifier/supprimer) avec un autre bouton
A partir de là est exécutée une fonction qui prend en paramètres (la table désirée, l’opération désirée, un numéro de page et un paramètre de tri (( 2 derniers, pas encore fonctionnels))
mon souci avec innerhtml est le suivant : avec la fonction javascript qui est appelée les paramètres sont envoyés dans un autre page en utilisant xhr.send
cette page prend les paramètres et avec des requêtes mysql et des conditions renvoie une <table> </table> avec les données voulues
(la table est séparée en plusieurs pages, de là la raison du paramètre de numéro de page, j'ai aussi prévu faire un tri si le paramètre de tri est setté )
je suis capable de faire fonctionner cette page (en allant directement sur la page) et de visionner le résultat en lui donnant des paramètres hardcodés, donc je sait que le résultat est bon et que tout est en ordre(pas 100% fonctionnel mais assez pour continuer), cependant lorsque viens le temps de retourner ce résultat a travers xhr.responseText, je n'obtiens aucun résultat.
ce que j'ai remarqué cependant est simple : j'ajoute une autre ligne où je viens modifier le contenu d'une autre div avec une string hardcodé et lorsque la fonction s’exécute je n'ai que le temps de voir s'afficher en éclair, un millième de secondes la dite string, donc la fonction s’exécute, le résultat que je veux s'affiche dans la <div> concernée mais change aussitôt pour revenir a son état original : vide. Ce que je trouve étrange c'est que je n'ai aucun affichage de ma page de résultat lors de cette opération, seulement le changement de ma <div> bidon qui me sers de test.
Je ne comprend pas cet étrange comportement de plus que j'ai écrit tout le code moi-même, 1000 lignes ++ et dans tout cela il ny a que 2 innerHtml qio sont susceptibles de changer le contenu d'une <div>, celui qui me cause problème et un autre que j'utilise dans une fonction très semblable qui me sers a mettre a jour des listes déroulantes selon le choix de la liste précédente (le code est tres semblable dans les 2 fonctions)
Voici une des tables que j'essaie de retourner, elle prend les parametres que j'envoie et génere une <table> que je veux renvoyer a travers xrh.responseText
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 function requestPages(numero, DBname, oper, sortBy){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)){ document.getElementById('tableModifRetrait').innerHTML = xhr.responseText; //document.getElementById('tableModifRetrait').firstChild.nodeValue = xhr.responseText; } } xhr.open("POST","ObjectFinder_Pages.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send("numPage="+numero+"&choixBD="+DBname+"&sortBy="+sortBy+"&operation="+oper+"&boutonModif=Modifier"); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 $result = mysql_query ("SELECT object.AssetNum, object.SerialNum, object.Object_Model, type.Description, type.Make, object.Used_By, object.Location_Code FROM object INNER JOIN type on object.Object_Model = type.Model ".$orderBy." LIMIT $debut, 15"); echo"<table id='showresults'>"; $number=1; echo" <th id='res_titre'> </th><th id='res_titre'> </th><th id='res_titre'> No Asset</th><th id='res_titre'> No Serie</th><th id='res_titre'>Utilisateur</th><th id='res_titre'>Modele </th><th id='res_titre'>Location</th><th id='res_titre'>Fabricant</th><th id='res_titre'>Description</th>"; while($row = mysql_fetch_array($result)){ echo" <tr>"; echo "<td><input type='radio' name='choixModifObjet' id='choixModifObjet' onclick=\"modifier('object', '$number');\"></td>"; echo" <td id='res_cellule_Numero'> ".$number." </td> <td id='res_cellule_Asset'> ".$row['AssetNum']." </td> <td id='res_cellule_Serial'>".$row['SerialNum']." </td> <td id='res_cellule_User'> ".$row['Used_By']."</td> <td id='res_cellule_Model'> ".$row['Object_Model']."</td> <td id='res_cellule_Location'> ".$row['Location_Code']."</td> <td id='res_cellule_Location'> ".$row['Make']."</td> <td id='res_cellule_Location'> ".$row['Description']."</td>"; echo"</tr>"; $number++; } echo"</table>"; }
Un coup de main serait très grandement apprécié !![]()
Partager