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

Laravel 8 中如何将订单发票号返回至视图

Laravel 订单创建后通过AJAX返回发票号解决方案

1. 后端控制器调整

在订单控制器的对应方法中,订单创建完成后直接返回JSON格式响应,不要返回视图或重定向,示例代码如下:

// App\Http\Controllers\OrderController.php
public function store(Request $request)
{
    // 原有订单校验、创建逻辑保留
    $validated = $request->validate([
        // 你的订单字段校验规则
    ]);
    
    $order = Order::create($validated);
    
    // 直接返回包含发票号的JSON响应,假设发票号字段为invoice_no
    return response()->json([
        'code' => 200,
        'invoice_no' => $order->invoice_no
    ]);
}

2. 前端AJAX请求调整

确保AJAX请求设置正确的响应格式,在成功回调中拿到发票号后渲染到对应视图节点,示例代码(基于jQuery)如下:

// 提交订单的AJAX逻辑
$.ajax({
    url: "{{ route('orders.store') }}",
    type: "POST",
    data: yourOrderFormData,
    dataType: "json",
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    success: function (response) {
        // 拿到发票号后插入到视图节点,假设对应节点ID为invoice_no_show
        $('#invoice_no_show').text('你的订单发票号为:' + response.invoice_no);
        // 其他后续业务逻辑自行补充
    },
    error: function (err) {
        console.error('请求错误', err);
    }
});

3. 常见问题排查

  • 确认订单模型Order的$fillable属性中已经添加invoice_no字段,保证创建订单时该字段被正常写入数据库
  • 不要在控制器方法中写return redirect()或return view()逻辑,AJAX请求无法正常解析302重定向和HTML视图响应
  • 打开浏览器开发者工具的「网络」面板,查看该AJAX请求的响应内容,确认后端确实返回了正确的invoice_no值,排除后端生成发票号的逻辑问题
  • 如果你使用原生fetch发送请求,需要先调用response.json()解析响应体后再获取对应字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:48:04