@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 при отправке формы.