Laravel提交表单具有相同的输入名称ajax

Posted

技术标签:

【中文标题】Laravel提交表单具有相同的输入名称ajax【英文标题】:Laravel Submitting form with same input name ajax 【发布时间】:2021-12-19 09:32:49 【问题描述】:

我的 ajax 函数需要帮助。我有一个表单可以提交具有相同输入名称的数据

当我在没有 javascript 的情况下运行我的代码时,我可以插入多个具有相同名称的输入数据,

提交的结构

"_token":"CepbQkKwKziSRwDJKuqlEa5i4E21Y5jvSbmDNvqu","id":"7","service_name":["asfd","safd"]

当我实现 javascript 时,一个连接的字符串被发送到控制器,这使得 service_name 无法访问。

FORMDATA: “_标记= CepbQkKwKziSRwDJKuqlEa5i4E21Y5jvSbmDNvqu&ID = 7&SERVICE_NAME%5B%5D = sdfg&SERVICE_NAME%5B%5D = gfds&_token = CepbQkKwKziSRwDJKuqlEa5i4E21Y5jvSbmDNvqu&ID = 8&_token = CepbQkKwKziSRwDJKuqlEa5i4E21Y5jvSbmDNvqu&ID = 9&_token = CepbQkKwKziSRwDJKuqlEa5i4E21Y5jvSbmDNvqu&ID = 10&_token = CepbQkKwKziSRwDJKuqlEa5i4E21Y5jvSbmDNvqu&ID = 11&_token = CepbQkKwKziSRwDJKuqlEa5i4E21Y5jvSbmDNvqu&ID = 18” P>

我的 javascript 函数

jQuery("form.ajax").on("submit", function (e) 
  e.preventDefault();
  jQuery.ajax(
    url: "/admin/adminpanel/insertService/",
    type: "post",
    data: 
      formdata: $(".ajax#servicesForm").serialize()
    ,
    dataType: "JSON",
    success: function (response) 
      console.log(response);
    ,
    error: function (jqXHR, exception) 
      var msg = "";
      if (jqXHR.status === 0) 
        msg = "Not connect.\n Verify Network.";
       else if (jqXHR.status === 404) 
        msg = "Requested page not found. [404]";
       else if (jqXHR.status === 500) 
        msg = "Internal Server Error [500].";
       else if (exception === "parsererror") 
        msg = "function Requested JSON parse failed.";
       else if (exception === "timeout") 
        msg = "Time out error.";
       else if (exception === "abort") 
        msg = "Ajax request aborted.";
       else 
        msg = "Uncaught Error.\n" + jqXHR.responseText;
      
    
  );
);

我的 PHP 控制器功能

public function insert(Request $request)
        
    
             return response()->json($request);
    

【问题讨论】:

也许这个***.com/a/323044/7498116 【参考方案1】:

使用 FormData 对象,从数据发送

fd = new FormData();

fd.append("input-name", value1);
fd.append("input-name2", value2 OR arry of value);


jQuery.ajax(
url: "/admin/adminpanel/insertService/",
type: "post",
data: 
  formdata: fd

【讨论】:

【参考方案2】:

我找到了解决方法:

首先,我创建了一个数组,并将input[name='service_name[]'] 的所有实例推入数组中。

然后我用ajax 传递数据并能够插入数据。

var serviceArray = new Array(), id;
jQuery.map($("input[name='service_name[]']"), function(obj, index) 
    serviceArray.push($(obj).val());
);

然后我的ajax 脚本:

jQuery.ajax(
    url: "/admin/adminpanel/insertService/",
    type: 'post',
    data: 
        'service_name': serviceArray,
        'id': id
    ,
    dataType: 'JSON',
    success: function(response) 
        console.log(response);
    
);

【讨论】:

以上是关于Laravel提交表单具有相同的输入名称ajax的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 测试两个具有相同输入名称的表单

Laravel 4 CSRF 表单通过 Ajax 调用提交

当多个输入具有相同名称时,根据输入类型设置 jquery 表单验证

提交大文件 Laravel 和 Ajax

使用 codeigniter 将具有相同输入名称的表单输入插入数据库行

如何修复 Laravel 5.8 Ajax 表单提交中的内部服务器错误