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

Laravel中AJAX获取JSON数据后无法渲染为HTML表格,仅显示原始JSON数据的问题排查

Laravel中AJAX获取JSON数据后无法渲染为HTML表格,仅显示原始JSON数据的问题排查

看起来你遇到的问题有点典型,咱们一步步拆解排查,很快就能解决:

一、先搞清楚核心逻辑:别直接访问返回JSON的路由

你的admin_finish.index路由对应的FinishController@index方法,作用就是返回纯JSON数据——如果你直接在浏览器地址栏输入这个路由的URL,浏览器肯定只会显示原始JSON,这是完全正常的!

你需要调整的是:

  1. 新增一个专门用来返回表格页面的路由,比如在web.php中添加:
Route::get('admin/finishes', function() {
    // 替换成你实际的blade视图文件名(比如你的表格视图是resources/views/admin/finishes.blade.php)
    return view('admin.finishes'); 
})->name('admin.finishes.page');
  1. 之后在浏览器中访问这个admin/finishes路由,这个页面会加载你的表格模板,再通过AJAX去请求admin_finish.index获取JSON数据填充表格。

二、修复JavaScript代码里的3个关键错误

你的JS脚本有几个语法和逻辑问题,直接导致AJAX无法正常工作:

1. 语法错误:缺少逗号

AJAX配置里dataType: 'json'后面没加逗号,会导致JavaScript解析失败,整个fetchData函数直接罢工:

// 错误写法
dataType: 'json'
success: function(data) { ... }

// 正确写法
dataType: 'json',
success: function(data) { ... }

2. 遍历对象错误:要遍历data.finishes而非data

你的控制器返回的是response()->json(['finishes' => $finishes]),所以AJAX拿到的data结构是{ finishes: [数组数据] }。你现在直接遍历data是错的,得遍历data.finishes:

// 错误写法
$.each(data, function(key, finishes) { ... })

// 正确写法
$.each(data.finishes, function(key, finish) {
    rows += `
    <tr>
        <td>${key + 1}</td> <!-- 用key+1生成自增序号 -->
        <td>${finish.name}</td>
        <td>
            <button data-id="${finish.id}" class="btn btn-primary btn-sm edit-post"><i class="fa fa-edit"></i></button>
            <button data-id="${finish.id}" class="btn btn-danger btn-sm delete-post"><i class="fa fa-trash"></i></button>
        </td>
    </tr>
    `;
})

3. 拼写错误:js_scirpts → js_scripts

你的blade里写的是@section('js_scirpts'),如果母模板admin.index中定义的脚本区块是正确拼写的js_scripts,那这个section的内容根本不会被加载,AJAX代码自然不会执行,赶紧改过来:

@section('js_scripts')
<script>
// ... 你的AJAX代码
</script>
@endsection

三、验证排查的小技巧

打开浏览器开发者工具(F12):

  1. 看Console标签:有没有JavaScript语法报错(比如之前的逗号缺失会在这里提示)。
  2. 看Network标签:刷新页面后,检查是否有admin_finish.index的AJAX请求,查看请求状态码(200是正常)和响应数据是否符合预期。

四、额外小提醒

  • 确保母模板admin.index已经引入了jQuery,否则$会报未定义错误。
  • 确保页面头部有CSRF meta标签:
<meta name="csrf-token" content="{{ csrf_token() }}">

按照这些步骤调整后,应该就能正常渲染表格了!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 03:10:40