代码之家  ›  专栏  ›  技术社区  ›  Jaeger

使用Ajax提交Laravel表单时获取“传递给函数的参数太少”

  •  0
  • Jaeger  · 技术社区  · 6 年前

    我正在一个引导模式中构建一个表单,当您按下“保存”按钮时,它将被提交给laravel。

    表单本身由文本字段、文本区域、文件输入和复选框组成。

    目前,应该接收所有数据的控制器如下所示:

    /**
     * @param $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function postCategory($request) {
        return response()->json($request);
    }
    

    我现在的目标是确保所有的事情都发生在好的控制器上,并以JSON字符串的形式返回到jquery。完成后,我将处理如何保存表单的内容。

    以下是我提交的Ajax的外观:

    $("#new_category").submit(function(e) {
    
        e.preventDefault();
    
        $.ajax({
            type: "POST",
            url: window.location.origin + '/admin/categories',
            data: {
                data: $(this).serialize()
            },
            dataType: "json",
            success: function(data){
                console.log(data);
            }
        });
    
    });
    

    更新

    以下是表单的外观:

    <form id="new_category">
        <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Nouvelle catégorie</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
            </button>
        </div>
        <div class="modal-body">
        <div class="form-group">
            <label for="category_title">Titre</label>
            <input type="text" class="form-control" id="category_title" placeholder="Titre" name="category_title">
        </div>
        <div class="form-group">
            <label for="category_description">Description</label>
            <textarea class="form-control" name="category_description" id="category_description" rows="3" placeholder="Description..."></textarea>
        </div>
        <div class="form-group">
            <label for="category_illustration">Illustration</label>
            <input type="file" class="form-control-file" name="category_illustration" id="exampleFormControlFile1">
        </div>
        <div class="form-check">
            <input type="checkbox" name="category_enabled" class="form-check-input" id="category_enabled" checked="checked">
            <label class="form-check-label" for="category_enabled">Actif</label>
        </div>
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
        <button type="submit" class="btn btn-primary">Enregistrer</button>
    </div>
    </form> 
    

    下面是我处理提交的路线:

    Route::post('/admin/categories', 'HomeController@postCategory');
    

    我也发现了 this question 这帮了我很大的忙,但我还是有这些问题。

    我该怎么办?

    提前谢谢你

    1 回复  |  直到 6 年前
        1
  •  2
  •   bthe0    6 年前

    我试着把代码编辑成这样:

    /**
     * @param $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function postCategory(Request $request) {
        return response()->json($request->all());
    }