我使用$ .post在php foreach循环中发布一些数据,例如变量,公司名称到控制器方法。在控制器中,我回显一个使用传递的数据绘制的条形图。 现在在foreach循环中我动态生成一个id,它将被传递给某个''元素,我需要将这个条形图绘制在该div内部。 我现在使用的代码发布在下面:
<?php
$id=0;
foreach($customer_companies as $data) {
$company_name=$data->CompanyName;
echo '<tr>
<script>function show_graph()
{
$.post("'.$base.'reports/single_bargraph/'.$company_name.'", {},function(result){
$("#'.$id.'").html(result);
});
}
</script>
<td class="tablecntntgry" id="'.$id.'" height="45">
<script type="text/javascript"> show_graph(); </script>
</td>
</tr>';
?>
假设我已经实现了获取数据$ customer_companies的分页,并且每次都会在页面中显示3个。现在我遇到的问题是图表没有在指定的id中绘制。:(有时,它会被绘制在正确的3 td生成但有时2/3将绘制在相同的td重叠另一个:( 有人可以帮我这个吗?
答案 0 :(得分:0)
$id
始终为零。show_graph'.$i.'()
(说实话,您根本不需要函数,将$.post
放在表后面)编辑:您的脚本应如下所示:
<?php
echo "<table>";
foreach ($customer_companies as $id => $data) {
echo '<tr><td class="tablecntntgry" id="row' . $id . '" height="45"></td></tr>';
}
echo "</table>";
// NOTE i open <script> tag after </table> closing tag
echo '<script>';
foreach ($customer_companies as $id => $data) {
$company_name = $data->CompanyName;
echo '
$.post("' . $base . 'reports/single_bargraph/' . $company_name . '", {},function(result){
$("#row' . $id . '").html(result);
});
';
}
echo '</script>';
答案 1 :(得分:0)
通常AJAX请求需要时间来获得响应。但是当响应到达客户端计算机时,您已经覆盖了该功能!
我建议您在PHP foreach循环之前将脚本标记放在某处,并将函数更改为接受两个参数。
答案 2 :(得分:0)
你真的需要在这里重新思考你的方法,你滥用javascript的灵活性。您是多次定义showGraph()
函数,那么您希望javascript触发哪个版本的方法?可能是第一个。将你的js与你的php分开。
<?php
$id=0;
foreach($customer_companies as $data) {
$company_name=$data->CompanyName;
echo '<tr id="'.$data['CompanyName'].'" class="companies"></tr>';
?>
$(function(){
$('.companies').each(function(){
$.post("'.$base.'reports/single_bargraph/'.$company_name.'", {},function(result){
$(this).append('<td class="tablecntntgry">'+result+'</td>');
});
});
});