Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kłopot z wyświetlaniem wszystkich danych
Forum PHP.pl > Forum > XML, AJAX
jerry100
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>
mortus
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".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.