PHP не может создать график javascript и отправить его клиенту в нисходящем направлении, но вам не нужно совершать реальный вызов AJAX после загрузки страницы. Достаточно простого javascript после загрузки страницы. Если вы получаете нужные данные на уровне PHP, вы можете сделать их доступными для JavaScript в HTML-коде, полученном клиентом. Шаги, чтобы это произошло:
- Сначала используйте PHP для извлечения необходимых данных из базы данных MySQL.
- Затем выведите данные графика, полученные с помощью PHP, внутри javascript.
блок кода как часть HTML, который PHP отправляет клиенту.
- Выполнить JavaScript с данными, загруженными PHP при загрузке страницы.
Итак, упрощенный пример:
<?php
// Retrieve plot data from mysql
$q = '...';
$r = mysql_query($q);
$plot_row1 = array();
$plot_row2 = array();
$plot_row3 = array();
while ($row = mysql_fetch_array($r)) {
// append values to $plot_row1, $plot_row2 and $plot_row3 arrays
}
$my_page_title = 'My first PHP/JS Combo Foray';
?>
<html>
<head>
<script type="text/javascript" src="/scripts/jquery-1.5.2.min.js"></script>
<script type="text/javascript" src="/scripts/my_plotter.js"></script>
</head>
<body>
<h1><?php echo $my_page_title; ?></h1>
<div id="chartdiv">
Hold on, javascript is loading the plot ...
</div>
</body>
</html>
<script type="text/javascript">
$(document).ready(function() {
// we're combining the php array elements into a comma separated list
// so that when the code is output javascript thinks it's an array.
// if the $plot_row1 = array(1, 2, 3) then we'd get this:
//
// row1 = [1, 2, 3];
//
// if you needed quotes around the imploded php array values (if they
// are strings where javascript is concerned) you could do this instead:
//
// row1 = ["<?php echo substr(implode('","', $plot_row1), 0, -2); ?>"];
row1 = [ <?php echo rtrim(implode(',', $plot_row1), ','); ?> ];
row2 = [ <?php echo rtrim(implode(',', $plot_row2), ','); ?> ];
row3 = [ <?php echo rtrim(implode(',', $plot_row3), ','); ?> ];
// call your js function that creates the plot
showBrittleness(row1,row2,row3);
// add whatever js code you need to append the plot to $('#chartdiv')
}
</script>
UPDATE
Согласно краткому исследованию jqplot docs , если вы редактируете строку 12 javascript, на который вы ссылаетесь из этого:
var plot1 = $.jqplot('chart1', [s1, s2], {
На это:
var plot1 = $.jqplot('chartdiv', [s1, s2], {
Ваша функция должна отображать график в элементе id диаграммы. Кажется, первый аргумент функции $ .jqplot - это элемент, в котором она создается ...