График Jqplot появляется только при первой отправке - PullRequest
0 голосов
/ 15 июня 2011

У меня есть следующий код jQuery для выполнения, когда я нажимаю кнопку

$('#substat').click(function() { 
    $.post('ext/engine.php', post, function(data){
        $('#statout').empty().append(data).dialog(
         {height:350, width:700, dialogClass: 'shadowme', position: 'center'})
        }); 
});

ОБНОВЛЕНИЕ - Я проверил код за кодом, чтобы увидеть, где проблема. Как это выглядит, это PHP-часть, которая выглядит следующим образом:

$html = '<script>';
for($s = 0; $s < $m; $s++) {
    if ($m-$s != 1) { $var1 .= $out[total][$s].', '; $var2 .= $out[age][$s].'", "'; }
    else { $var1 .= $out[total][$s]; $var2 .= $out[age][$s].'"';}
    if ($out[total][$s] > $max) { $max = $out[total][$s]; }
}
if ($max > 10) { $max = round($max/10); }
$html .= 'VarH = ['.$var1.'];
    plot1 = $.jqplot("statout", [VarH], {
                legend:{show:true, location:"ne"},
                title:"Gente",
                series:[ { label:"VarH", renderer:$.jqplot.BarRenderer } ],
                axes:{
                    xaxis:{ renderer:$.jqplot.CategoryAxisRenderer, ticks:['.$var2.'] },
                    yaxis:{ min:0, tickInterval:'.$max.', autoscale: true }
                },
                seriesDefaults:{ lineWidth:5, rendererOptions: { barWidth:5, barMargin:5, barPadding:0 } }
            });
    </script>';
echo $html;

Если я изменю последнюю строку с echo $ html; на echo "Hello"; , это всегда будет работать.

Но если я оставлю это с переменной $ html, созданной с помощью jqplot, она будет работать только один раз при рендеринге в диалоге jquery. После этого мне нужно обновить страницу, чтобы она снова заработала, вместо того, чтобы просто нажать кнопку «Отправить» снова, чтобы создать диалоговое окно с графиком.

1 Ответ

2 голосов
/ 29 июня 2011

У меня была такая же проблема. Решение состоит в том, чтобы сначала отобразить диалоговое окно, а затем (!) Загрузить график в.

...