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

Ajax DataTable显示[object Object]而非时间格式问题求助

解决DataTable中timestamp字段显示[object Object]的问题

这个问题我之前也碰到过!原因是Laravel默认会把created_at和updated_at字段封装成Carbon日期对象,当通过AJAX返回JSON时,这个对象会被序列化成包含date、timezone等属性的JSON对象,而不是直接的日期字符串,所以DataTable直接渲染就会显示[object Object]。下面给你两种解决方案,选哪种看你的需求:

方法一:后端直接返回格式化后的日期字符串

如果你希望所有调用这个接口的地方都拿到统一格式的日期,可以在Laravel模型或控制器里处理:

方案1:在模型中配置日期格式化

在你的对应模型(比如CustContinfo)里添加$casts属性,指定日期字段的输出格式:

class CustContinfo extends Model
{
    // ... 其他代码
    protected $casts = [
        'created_at' => 'datetime:Y-m-d H:i:s',
        'updated_at' => 'datetime:Y-m-d H:i:s',
    ];
}

这样当模型转成JSON时,created_at和updated_at会直接变成你指定格式的字符串,前端DataTable不需要任何修改就能正常显示。

方案2:在控制器中手动格式化

如果不想修改模型全局配置,也可以在返回数据时单独处理这两个字段:

// 假设你在控制器中查询数据的代码
$continfos = CustContinfo::select('id', 'receipt_date', 'info_division_name', 'contact_status', 'note', 'created_at', 'updated_at')->get();

// 格式化日期字段
$continfos->transform(function ($item) {
    $item->created_at = $item->created_at->format('Y-m-d H:i:s');
    $item->updated_at = $item->updated_at->format('Y-m-d H:i:s');
    return $item;
});

return response()->json($continfos);

方法二:前端DataTable中通过render函数处理

如果不想改动后端代码,直接在前端DataTable的列配置里用render函数解析JSON日期对象:
修改你原代码中的columns部分,把created_at和updated_at列的配置改成下面这样:

"columns": [
    { "data": "id" },
    { "data": "receipt_date" },
    { "data": "info_division_name" },
    { "data": "contact_status" },
    { "data": "note" },
    { 
        "data": "created_at",
        "render": function(data, type, row) {
            // Carbon序列化后的对象包含date字段,直接取这个值
            return data ? data.date : '-';
            // 如果需要转换成本地时间格式,可以用:
            // return data ? new Date(data.date).toLocaleString() : '-';
        }
    },
    { 
        "data": "updated_at",
        "render": function(data, type, row) {
            return data ? data.date : '-';
        }
    }
],

这样DataTable渲染时会自动把日期对象转换成你需要的字符串格式。

两种方法对比

  • 后端处理:优点是全局统一,所有调用该接口的地方都能拿到格式化后的日期;缺点是灵活性稍弱,如果不同页面需要不同格式的日期,还要额外处理。
  • 前端处理:优点是灵活,可以根据当前页面需求自定义日期格式;缺点是每个用到该接口的DataTable都要写一遍render逻辑。

你可以根据自己的实际场景选择合适的方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:09:02