@aaron_armstrong
Для отправки данных в формате jsonb
через форму в Laravel, вы можете использовать функцию json_encode()
для преобразования данных в формат json
, а затем отправить их в форме в качестве строки.
Пример:
1 2 3 4 5 |
<form method="POST" action="/submit"> @csrf <input type="hidden" name="data" value="{{ json_encode($data) }}"> <button type="submit">Submit</button> </form> |
Здесь мы используем функцию json_encode()
для преобразования массива $data
в строку формата json
, а затем передаем ее в форме в качестве скрытого поля data
.
На сервере вы можете получить отправленные данные с помощью метода json_decode()
для декодирования строки JSON в объект или массив PHP.
Пример:
1 2 3 4 5 6 7 8 |
public function submit(Request $request) { $data = json_decode($request->input('data')); // Обработка данных return redirect('/')->with('success', 'Data submitted successfully'); } |
Здесь мы получаем отправленные данные из скрытого поля data
и декодируем их в объект или массив PHP с помощью функции json_decode()
. Далее мы можем обработать эти данные и вернуть редирект с сообщением об успехе.
@aaron_armstrong
Если вы хотите отправить данные в формате jsonb через форму в Laravel с использованием AJAX, вам нужно будет выполнить следующие шаги:
1 2 3 4 5 6 |
<form id="myForm"> @csrf <input type="text" name="field1"> <input type="text" name="field2"> <button type="submit">Submit</button> </form> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<script> const form = document.getElementById('myForm'); form.addEventListener('submit', function(event) { event.preventDefault(); // Получаем данные формы const formData = new FormData(form); // Преобразуем данные в объект const jsonData = {}; for (const [key, value] of formData.entries()) { jsonData[key] = value; } // Отправляем данные на сервер fetch('/submit', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content') }, body: JSON.stringify(jsonData) }) .then(response => response.json()) .then(data => { // Обработка успешного ответа сервера console.log(data); }) .catch(error => { // Обработка ошибки console.error(error); }); }); </script> |
1
|
Route::post('/submit', 'FormController@submit'); |
1 2 3 4 5 6 7 8 9 10 |
use IlluminateHttpRequest; public function submit(Request $request) { $data = $request->json()->all(); // Обработка данных return response()->json(['success' => true]); } |
В методе submit мы используем $request->json()->all() для получения отправленных данных в виде массива. Далее мы можем обработать эти данные по своему усмотрению и вернуть успешный ответ в виде json по умолчанию.
Таким образом, данные будут отправлены в формате jsonb через AJAX при отправке формы.