JQuery AJAX формы сообщение для Laravel 4Bt - PullRequest
0 голосов
/ 28 ноября 2018

Я отправляю сообщение Ajax моему бэкэнду Laravel.Я сериализовал форму и отправил ее, но я не уверен, как использовать правильный формат в моем бэкэнде (php):

Мой Ajax:

submitPdf: function () {
    $('form').submit(function (e) {

        if($("#pdfPreviewCheckbox").is(':checked')) {
            e.preventDefault();
        } else {
            return true;
        }

        var $form = $(this);

        var $inputs = $form.find("input, select, button, textarea");

        var serializedData = $form.serialize();

        $inputs.prop("disabled", true);

        $.ajax({
            type: "post",
            url: "/test/public/labelspecial/new/input",
            data: {
                "product": serializedData
            },
            success: function () {
                console.log("success");
            },
            error: function (e) {
                console.log("an error occured " + e);
            }
        });
    });
}

, если я var_dump(Input::all());Я получаю вывод, подобный этому:

array(5) {
  ["product"]=>
  array(3) {
    [0]=>
    array(11) {
      ["label"]=>
      string(3) "asd"
      ["model"]=>
      string(0) ""
    }
    [1]=>
    array(11) {
      ["label"]=>
      string(0) ""
      ["model"]=>
      string(0) ""
    }
    [2]=>
    array(11) {
      ["label"]=>
      string(0) ""
      ["model"]=>
      string(0) ""
    }
  }
  ["printPDF"]=>
  string(6) "Senden"
  ["variant"]=>
  string(1) "2"
  ["count"]=>
  string(1) "3"
  ["_token"]=>
  string(40) "T7aAxjnfAyAcGs5PAW75RBbEFjfYpt4eCgO7iT1j"
}

И если я отправляю сериализованные данные через Ajax, я получаю этот вывод:

array(1) {
  ["product"]=>
  string(1135) "product%5B0%5D%5Blabel%5D=&product%5B0%5D%5Bmodel%5D=&product%5B0%5D%5B...
}

Выход должен быть таким же, как я могу выполнитьчто?

Править Я пытался использовать $form.serializedArray() вместо $form.serialize(), я получаю лучший результат, но он пока не верен.Если я dd в php, я получаю это сейчас:

array(1) {
  ["product"]=>
  string(1626) "[{"name":"product[0][label]","value":""}]"
}

1 Ответ

0 голосов
/ 28 ноября 2018

Используйте объект-форму, чтобы получить все входные данные в форме.

$('form').submit(function (e) {

        if($("#pdfPreviewCheckbox").is(':checked')) {
            e.preventDefault();
        } else {
            return true;
        }

            var form = $( this );

            // you can't pass Jquery form it has to be javascript form object
            var formData = new FormData(form[0]);

  $.ajax({
            type: "post",
            url: "someURl",
            data: {
                 formData 
            },
            success: function () {
                console.log("success");
            },
            error: function (e) {
                console.log("an error occured " + e);
            }
        });
    });

Контроллер Laravel:

public function methodName(Request $request){
return $request->all();
}

Если вы хотите получить доступ только к указанному входу, вы можете использовать, как показано ниже

return $request->inputName;

Маршрут:

Route::post("/someURl", ControllerName@methodName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...