![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 30.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Cześć
Mam problem z wyswietleniem wykresu. Może podpowiecie gdzie tkwi błąd? Na stronie zamieściłem pole wyboru SELECT. Wybranie określonego pola przesyła do pliku getuser.php numer wybranej opcji. W oparciu o ten numer pobierane są w pliku getuser.php dane osoby z bazy danych, a następnie wyświetlane. W pliku tym jest także wykres w oparciu o FusionCharts. Wywołanie samego pliku w przeglądarce np. getuser.php?q=2 wyświetla prawidłowo zawartosć pliku. Natomiast wywołanie go poprzez txtHint w index.php z ponizszego skryptu wyświetla dane bez wykresu. W miejscu wykresu jest jedynie słowo FusionCharts. pochodzace z wykres.php Za wszystkie rady bardzo dzięki. Pole wyboru w index.php <select name="users" onchange="showUser(this.value)"> <option value="1" >Adam</option> <option value="2" >Jan</option> . . . </select> w sekcji <head> mam <script type="text/javascript"> function showUser(str) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","./getuser.php?q="+str,true); xmlhttp.send(); } </script> Wywołanie w cześci <body> <div id="txtHint"></div> Plik getuser.php <?php $q=$_GET["q"]; include('db_fns.php'); $sql="SELECT * FROM baza WHERE id = '".$q."'"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { echo "<table style=width:100%; border='0'>"; echo "<tr>"; echo "<td>"; echo "<table style=width:100%; border='0'>"; echo "<tr>"; echo "<th WIDTH=130>Imie</th>"; echo "<td>" . $row['imie'] . "</td>"; echo "</tr>"; echo "<tr>"; echo "<th>Nazwisko</th>"; echo "<td>" . $row['nazwisko'] . "</td>"; echo "</tr>"; $glos1=$row['tak']; $glos2=$row['nie']; echo "</table>"; echo "</td>"; $string = <<<XML <graph caption='Sonda' xAxisName='' yAxisName='' decimalPrecision='0' formatNumberScale='0'> <set value='$glos1' color='8BBA00' /> <set value='$glos2' color='9D080D' /> </graph> XML; $xml = new SimpleXMLElement($string); echo $xml->asXML("./Data/wykres3D.xml"); mysql_close($connection); echo "<td>"; echo "<table style=width:100%; border='0' bordercolor='#8c0c0c' frame='void'>"; echo "<tr>"; echo "<td WIDTH=112 ALIGN=center VALIGN=top><img src=" . $row['foto'] . "></td>"; echo "</tr>"; echo "<tr>"; echo join( '', file( 'wykres.php' ) ) ; echo "</tr>"; echo "</table>"; echo "</td>"; echo "</tr>"; echo "</table>"; } ?> plik wykres.php <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <script language="JavaScript" src="./JSClass/FusionCharts.js"></script> <script type="text/javascript" src="./jquery.js"></script> <script type="text/javascript" src="./script.js"></script> </head> <body> <div id="wykres"> <table width="%" border="1" bordercolor="#8c0c0c" frame="void" cellspacing="0" cellpadding="1" align="center"> <tr> <td valign="top" class="text" align="center"> <div id="chartdiv" align="center"> FusionCharts. </div> <script type="text/javascript"> var chart = new FusionCharts("./Charts/FCF_Column3D.swf", "ChartId", "165", "200"); chart.setDataURL("./Data/wykres3D.xml"); chart.render("chartdiv"); </script> </td> </tr> </table> </div> </body> </html> |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
No niestety jeżeli używasz standardowego obiektu XMLHttpRequest, to musisz mieć na uwadze fakt, że skrypty JS nie zostaną automatycznie wykonane. Musisz wymusić ich wykonanie pobierając z otrzymanej odpowiedzi (AJAX response) treść skryptu (to pomiędzy znacznikami <script> i </script>) i wrzucając to do funkcji eval(). Nieco inaczej jest jak używasz jQuery (.load(), .get(), .post()) lub (chyba) Prototype, bo biblioteki te wspierają możliwość wykonania skryptu JS z pobranej AJAX-em odpowiedzi.
Temat był ostatnio poruszany na forum, więc może i znajdziesz tutaj odpowiedź. W Google szukaj pod hasłem "javascript in ajax response". |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.06.2025 - 03:22 |