Я отправляю сообщение Ajax на свой сервер laravel. Я сериализую форму и отправляю ее, но я не уверен, как я могу использовать правильный формат в моем бэкэнде 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.info("success");
},
error: function (e) {
console.info("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":""}]"
}






Используйте объект-форму для получения всех входных данных в форме.
$('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.info("success");
},
error: function (e) {
console.info("an error occured " + e);
}
});
});
Контроллер Laravel:
public function methodName(Request $request){
return $request->all();
}
Если вы хотите получить доступ только к указанному вводу, вы можете использовать, как показано ниже
return $request->inputName;
Маршрут :
Route::post("/someURl", ControllerName@methodName);