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

如何将TWAIN扫描的表格数据存入Laravel数据库?

排查与解决步骤

1. 前端表单基础检查

  • 确认表单action属性指向正确的Controller路由,提交方法为POST
  • 检查表单输入字段的name属性与rubrique_facturations表字段完全匹配(比如表有numero_facture字段,输入框name需设为numero_facture)
  • 打开浏览器开发者工具(F12)的Network标签,点击“Enregistrer”后观察请求状态:
    • 无请求发出:检查按钮是否为<button type="submit">Enregistrer</button>,或排查是否有JS阻止了默认提交行为
    • 有请求但状态异常:404表示路由不存在,419表示缺少CSRF令牌

2. 解决CSRF验证问题

Laravel默认开启CSRF保护,必须在表单内添加令牌:

<!-- 方式1:使用Blade指令 -->
@csrf

<!-- 方式2:手动添加隐藏字段 -->
<input type="hidden" name="_token" value="{{ csrf_token() }}">

3. 确认TWAIN扫描数据传递

TWAIN扫描的表格数据需正确传递到表单:

  • 提交前在浏览器控制台打印表单数据,验证扫描内容是否填充到对应字段:
    console.log(new FormData(document.querySelector('form')));
    
  • 若用AJAX传递结构化数据(如JSON),需设置正确的contentType:
    contentType: 'application/json'
    

4. 后端Controller处理示例

路由配置(routes/web.php)

Route::post('/facturations/save', [FacturationController::class, 'store'])->name('facturations.store');

Controller方法(FacturationController.php)

public function store(Request $request)
{
    // 先打印请求数据,确认是否接收成功
    // dd($request->all());

    // 根据表字段设置验证规则
    $validated = $request->validate([
        'numero_facture' => 'required|string|max:255',
        'date_facture' => 'required|date',
        'montant' => 'required|numeric',
        // 其他表字段的验证规则
    ]);

    // 插入数据库
    \App\Models\RubriqueFacturation::create($validated);

    return redirect()->back()->with('success', 'Facture enregistrée');
}

5. 隐藏错误排查

  • 查看Laravel日志文件storage/logs/laravel.log,获取后台隐藏错误信息
  • 若用AJAX提交,添加错误回调打印详情:
    $.ajax({
        url: "{{ route('facturations.store') }}",
        method: 'POST',
        data: formData,
        success: res => alert('Succès'),
        error: xhr => console.log(xhr.responseText)
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:38:09