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

Laravel使用AJAX提交同名多输入表单无法正确识别参数问题

问题原因

  • 你将serialize()得到的表单序列化字符串,封装为了formdata字段的值提交给后端,后端只会将整段字符串识别为formdata参数的值,不会自动解析字符串内部的参数结构,自然无法直接拿到service_name数组
  • 序列化表单时使用了全局选择器$(".ajax#servicesForm"),会把页面上所有符合条件的表单数据全部拼接,导致提交内容中出现多组_token、id参数的异常情况

修复方案

直接修改JS提交逻辑即可,后端Laravel代码无需调整:

jQuery("form.ajax").on("submit", function (e) {
  e.preventDefault();
  // 仅序列化当前触发提交事件的表单,避免拼接其他表单数据
  const serializedForm = $(this).serialize();
  jQuery.ajax({
    url: "/admin/adminpanel/insertService/",
    type: "post",
    // 直接传入序列化后的表单数据,不要额外封装对象
    data: serializedForm,
    dataType: "JSON",
    success: function (response) {
      console.log(response);
      // 后续可直接通过 response.service_name 拿到数组格式的参数
    },
    error: function (jqXHR, exception) {
      var msg = "";
      if (jqXHR.status === 0) {
        msg = "未连接,请检查网络。";
      } else if (jqXHR.status === 404) {
        msg = "请求的页面不存在 [404]";
      } else if (jqXHR.status === 500) {
        msg = "内部服务器错误 [500]";
      } else if (exception === "parsererror") {
        msg = "JSON解析失败";
      } else if (exception === "timeout") {
        msg = "请求超时";
      } else if (exception === "abort") {
        msg = "请求被中止";
      } else {
        msg = "未知错误\n" + jqXHR.responseText;
      }
      console.log(msg);
    }
  });
});

验证方式

修改后后端可以直接通过$request->service_name获取到数组格式的参数,返回的响应中也会呈现和原生表单提交一致的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:57:02