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

Laravel控制器无法获取AJAX提交的name数组输入值问题排查

解决Laravel控制器无法获取AJAX提交的name参数问题

咱们一步步排查并解决这个问题:

1. 先修复HTML里的重复ID问题

你的两个input元素ID完全重复(都是id="1"),这违反了HTML的核心规范——ID必须是页面唯一的。这会导致onchange触发时,JS无法精准定位到对应的输入框,后续AJAX获取值自然会出问题。先把ID改成唯一的:

<input type="text" id="input1" name="name[1]" class="input-number" onchange="input_onchange(this.id)" value="39" min="1" max="25">
<input type="text" id="input2" name="name[2]" class="input-number" onchange="input_onchange(this.id)" value="39" min="1" max="25">

2. 修正AJAX里的选择器语法错误

你的jQuery选择器写法有问题:因为input的name属性值包含方括号[],必须用引号包裹才能让jQuery正确解析。原来的写法会导致JS找不到对应的输入框,最终提交的name参数是空值。修改AJAX的data部分:

$.ajax({
    type: 'POST',
    url: '/sepetim/ajax',
    data: {
        '_token': $('input[name="_token"]').val(),
        // 用双引号包裹name属性值,避免语法解析错误
        'name': $('input[name="name[' + id.replace('input', '') + ']"]').val()
    },
    success: function(data) {
        $('#fiyat').replaceWith("<span class='para fw6'>" + data.formattedPrice + " TL</span>");
    }
});

这里因为我们把ID改成了input1/input2,所以用id.replace('input', '')提取对应的数字索引;你也可以更直接,把onchange改成input_onchange(1)/input_onchange(2),直接传索引值会更简洁。

3. 控制器里的参数获取验证

前端修正后,控制器的$data->name = $request->input("name")应该能正常拿到值了。如果还是有问题,可以用以下方式排查:

  • 先打印整个请求内容,确认参数是否真的提交到后端:
    dd($request->all()); // 查看所有提交的参数,确认name是否存在
    
  • 也可以尝试其他参数获取方式:
    $data->name = $request->get('name');
    // 或者直接用属性访问
    $data->name = $request->name;
    

额外检查点

  • 确保页面里存在name="_token"的隐藏输入框,CSRF令牌必须正确提交,否则Laravel会直接拒绝请求。
  • 打开浏览器开发者工具的Network面板,查看AJAX请求的Form Data,确认name参数是否正确携带了输入值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:36:16