PIC Mi objetivo es cuando presiono enter, los datos de entrada se guardarán en la base de datos.
El controlador:
public function sendMessage(Request $request){ $data = Message::create([ 'from' => Auth::user()->id, 'to' => $request->receiver_id, 'message' => $request->message, 'is_Read' => 0, ]); $data->save(); }
La forma:
<div class="card-footer"> <form id="message_form"> <div class="input-group"> <div class="input-group-append"> <span class="input-group-text attach_btn"><i class="fas fa-paperclip"></i></span> </div> <input type="text" name="message" id="message_input" class="form-control type_msg" placeholder="Type your message..."> </div> </form>
El código ajax:
$(document).on('keyup', '.input-group input', function (e) { var message = $(this).val(); var url = '{{ url('message') }}'; // check if enter key is pressed and message is not null also receiver is selected if (e.keyCode == 13 && message != '' && receiver_id != '') { $(this).val(''); // while pressed enter text box will be empty var datastr = "receiver_id=" + receiver_id + "&message=" + message; $.ajax({ type: "post", url: '/message', // need to create this post route data: datastr, cache: false, success: function (data) { console.log(data) }, error: function (jqXHR, status, err) { }, complete: function () { } }) } })
La ruta:
Route::post('message', [ConsultationController::class, 'sendMessage']);
Y como resultado, los datos no están en la base de datos y no hay notificación de error. Como puedo resolver esto? Por favor ayuda :)
Intento eliminar la declaración If en el código ajax, y esto sucede (500 ... (Error interno del servidor)) PIC :
POST http://127.0.0.1:8000/message 500 (Internal Server Error) send @ jquery.min.js:2 ajax @ jquery.min.js:2 (anonymous) @ consultation?message=adfadf:399 dispatch @ jquery.min.js:2 v.handle @ jquery.min.js:2
¿Agregó sus columnas en la propiedad $fillable en el modelo Message?
Su código se ve bien, solo necesita tener en cuenta que en cada solicitud de publicación / colocación / eliminación, laravel requiere un token csrf para validar. Puede leer más sobre esta seguridad en la documentación de laravel .
Debe agregar esto en su solicitud de ajax.
$.ajax({ type: "post", url: '/message', // need to create this post route data: { receiver_id, message, }, headers: { // Add this 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, cache: false, success: function (data) { console.log(data) }, error: function (jqXHR, status, err) { }, complete: function () { } })