1

I need help with my ajax function. I have a form that submits data with the same input name

When I run my code without javascript, I can insert multiple input data with the same name,

Submitted structure

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

When I implement javascript, a concatenated string is sent to the controller and this makes the service_name inaccessible.

formdata:"_token=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"

My javascript function

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;
      }
    }
  });
});

My PHP Controller Function

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

2 Answers 2

0

use FormData Object, to send fromdata

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
}
Sign up to request clarification or add additional context in comments.

Comments

0

I found a workaround:

First, I created an array, and pushed all instances of input[name='service_name[]'] into the array.

Then I passed the data with ajax and was able to insert the data.

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

My ajax script then:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.