laravel 控制器不接收来自 AJAX 的数据

Posted

技术标签:

【中文标题】laravel 控制器不接收来自 AJAX 的数据【英文标题】:The laravel controller don't receive the data from AJAX 【发布时间】:2021-11-23 08:57:00 【问题描述】:

我的问题是,当我通过 JS 发送所有信息时,没问题,但我的控制器没有收到数据。 我需要发送表单和对象数组中的所有信息。 我正在使用 Laravel 和 Ajax /Jquery。

JS / Jquery /Ajax 代码

$(document).ready(function()

    $('#BtnRegistrar').click(function(event) 
        event.preventDefault();
        var dataString = $('#formulario').serialize(); 
       
        $.ajax(
            type: "POST",
            data: data:dataString, list:cursos, //Here load the form data and my array of objects
            contentType: 'application/json; charset=utf-8',
            headers: 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content'),
            success: function(data) 
                console.log('Done');
            
        );
    );
); 

Laravel.blade.php

           <form method="post" action="/coordinacionCarrera/agregarNombramiento" id="formulario">
            @csrf
            <div class="row">
                <div class="row">
                    <div class="col-md-6">
                        <label for="docente">Escoja el docente.</label>
                        <div class="input-group">
                            <span class="input-group-text" id="basic-addon1">
                                <i class="fas fa-id-card"></i>
                            </span>
                            <select required class="form-select" name="usuario" id="usuario">
                                <option selected>Seleccione</option>
                                @foreach ($usuario as $user)
                                <option value=$user->id>$user->persona->Cedula | $user->persona->Nombre $user->persona->PrimerApellido $user->persona->SegundoApellido</option>
                                @endforeach
                            </select>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <label for="Desde">Desde.</label>
                        <div class="input-group mb-3">
                            <span class="input-group-text">
                                <i class="fas fa-calendar-day"></i>
                            </span>
                            <input type="date" class="form-control" name="Desde" id="vigencia" value="old('Desde')">
                        </div>
                    </div>
                    <div class="col-md-3">
                        <label for="Hasta">Hasta.</label>
                        <div class="input-group mb-3">
                            <span class="input-group-text">
                                <i class="fas fa-calendar-day"></i>
                            </span>
                            <input type="date" class="form-control" name="Hasta" id="vigencia2" value="old('Hasta')">
                        </div>
                    </div>
                </div>
                <div class="row mtop16">
                    <div class="col-md-4">
                        <label for="Categoria">Categoría.</label>
                        <div class="input-group mb-3">
                            <span class="input-group-text">
                                <i class="fas fa-calendar-day"></i>
                            </span>
                            <select disabled class="form-select" name="categoria" id="categoria">
                                <input type="hidden" name="CategoriaActual" id="CategoriaActual" value="0">
                            </select>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <label for="correo">Correo.</label>
                        <div class="input-group mb-3">
                            <span class="input-group-text">
                                <i class="fas fa-envelope"></i>
                            </span>
                            <select disabled class="form-select" name="correo" id="correo">
                                <input type="hidden" name="CorreoActual" id="CorreoActual" value="0">
                            </select>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <label for="Telefono">Teléfono.</label>
                        <div class="input-group mb-3">
                            <span class="input-group-text">
                                <i class="fas fa-phone-alt"></i>
                            </span>
                            <select disabled class="form-select" name="telefono" id="telefono">
                                <input type="hidden" name="TelefonoActual" id="TelefonoActual" value="0">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="row mtop16">
                    <div class="col-md-4">
                        <label for="Curso">Escoja el curso.</label>
                        <div class="input-group mb-3">
                            <span class="input-group-text">
                                <i class="fas fa-book"></i>
                            </span>
                            <select required class="form-select" name="curso" id="curso">
                                <option selected value="0">Seleccione</option>
                                @foreach ($curso as $cursos)
                                <option value=$cursos->IDCurso>$cursos->Codigo | $cursos->Nombre</option>
                                @endforeach
                            </select>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <label for="Tipo">I/C.</label>
                        <div class="input-group mb-3">
                            <span class="input-group-text">
                                <i class="fas fa-book"></i>
                            </span>
                            <select required class="form-select" name="Tipo" id="Tipo">
                                <option selected value="0">Seleccione</option>
                                @foreach (obtenerTipoDeCurso() as $Tipo=>$id)
                                <option value="$id">$Tipo</option>
                                @endforeach
                            </select>
                        </div>
                    </div>
                    <div class="col-md-1">
                        <label for="Tutoria">Tutoría.</label>
                        <div class="input-group mb-3">
                            <input class="ms-3 mt-3" name="Tutoria" id="Tutoria" type="checkbox" value="0">
                        </div>
                    </div>

                    <div class="col-md-3">
                        <label for="CargaAcademica">Carga Académica.</label>
                        <div class="input-group mb-3">
                            <span class="input-group-text">
                                <i class="fas fa-book"></i>
                            </span>
                            <select required class="form-select" name="CargaAcademica" id="CargaAcademica">
                                <option selected value="0">Seleccione</option>
                                @foreach (ObtenerCargaAcademica() as $CargaAcademica=>$id)
                                <option value="$id">$CargaAcademica</option>
                                @endforeach
                            </select>
                        </div>
                    </div>
                    <div class="col-md-1 mtop16">
                        <a onclick='AgregarCursoDocente()' class="btn btn-plus">
                            <i class="fas fa-plus-square fs-2"></i>
                        </a>
                    </div>
                </div>
                <div class="row mtop16" id="CursoDocente">
                </div>
            </div>

            <div class="row ">
                <div class="col-md-12">
                    <button type="submit" class="mtop16 btn btn-success" id="BtnRegistrar">Guardar</button>
                </div>
            </div>
        </form>

控制器功能

public function postAñadirNombramiento(Request $request)
    
        return $request; //Here im trying to capture the data
    

当我按下提交按钮时控制台浏览器

有人知道我为什么没有收到任何东西吗?还是有任何其他方法可以发送表单输入和用 javascript 创建的对象数组?

【问题讨论】:

你怎么知道你没有收到任何东西?您在控制器中所做的就是将您的请求返回给 ajax,而在您的 ajax 中,您只是在写“完成”。您是否检查过“网络”选项卡以查看返回的内容?您是否尝试对控制器函数中的请求执行其他操作? 因为我可以通过 return 或 dd() 在控制器上看到数据,并且如果我尝试重定向到另一个站点或类似站点(不使用请求)没有工作,例如当我按下提交控制器将我重定向到另一个站点但没有工作 【参考方案1】:

问题来了

 success: function(data) 
                console.log('Done');
            

请求已成功到达您的控制器,您每次只记录“完成” 替换为

 success: function(data) 
                console.log(data);
            

【讨论】:

现在我对 JQuery 有了更多的了解(我发送信息而不为网站充值),现在我在控制器上获取数据,我可以使用这些信息进行操作(CRUD)。谢谢!

以上是关于laravel 控制器不接收来自 AJAX 的数据的主要内容,如果未能解决你的问题,请参考以下文章

回声连接不接收来自广播状态通道的数据

Laravel 和 Datatables:Ajax 数据不使用来自 html 选择的新 ajax 参数刷新表

在 Laravel 5.1 中请求 ajax 文件不控制 PHP?

在 laravel 中使用 ajax 从控制器刀片文件中传递搜索数据时遇到问题

当 Ajax 响应来自使用 select2 的 laravel 控制器时,如何检查 JQuery 附加选项中的条件?

AJAX发布不向laravel控制器发送数据