You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel+jQuery项目中为数据表进度栏加载数据库动态值

现有代码存在的问题汇总
  • JS逻辑问题:$(document).ready()的回调参数默认是jQuery对象本身,不是你自定义的SHAP_abs,你没有从页面拿到数据库存储的SHAP_abs字段值,直接计算得到的progressBarVal必然是NaN,进度条生成逻辑完全失效。
  • 数据类型问题:SHAP_abs是varchar类型,你没有做显式的数值转换就直接做乘法运算,会出现非预期的计算结果。
  • 选择器逻辑问题:全局用$(".progress")选择所有进度容器,会给页面上所有条目都追加同一个进度条,多条数据的场景下进度条会重复叠加、和对应行数据完全不匹配。
  • 模板语法问题:<div class="progress">标签没有闭合,不符合HTML语法规范。
  • 数据传递问题:Blade模板里没有把每行对应的$corr->SHAP_abs值传递到前端,JS无法获取每行对应的进度值。

修复方案示例

1. Blade模板代码调整

把每行对应的SHAP值存到元素的data属性,同时闭合标签:

@foreach($Correlations_list as $corr)
    @if($corr->Variable == $row )
    <td class="col-md-4">
        <!-- 将当前行的SHAP_abs存入data属性,和条目一一绑定 -->
        <div class="progress" data-shap="{{ $corr->SHAP_abs }}"></div>
    </td> 
    @endif
@endforeach

2. JS代码调整

遍历每个进度容器,单独处理每行的进度值:

<script type="text/javascript">    
$(document).ready(function(){  
    // 逐个处理每个进度条容器
    $(".progress").each(function(){
        // 读取data属性的SHAP值,显式转浮点型适配varchar存储格式
        let shapVal = parseFloat($(this).data('shap'));
        // 非法值兼容处理
        if(isNaN(shapVal)) shapVal = 0;
        let progressBarVal = (shapVal * 100).toFixed(2);
        let progressHtml = `<div class='progress-bar progress-bar-striped active' role='progressbar' 
                    aria-valuenow="${progressBarVal}" aria-valuemin="0" aria-valuemax="100" 
                    style="width:${progressBarVal}%">${progressBarVal}%</div>`;    
        $(this).append(progressHtml);    
    })
});    
</script>

控制器代码无需调整,如果需要更稳妥的数值处理,可以在Correlation模型中添加SHAP_abs字段的访问器,提前做数值转换。


内容的提问来源于stack exchange,提问作者prashant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 16:30:01