【问题标题】:Laravel 5.1 - Crud with ajaxLaravel 5.1 - 使用 ajax 的 Crud
【发布时间】:2016-10-21 10:53:07
【问题描述】:

您好,我正在使用 ajax 进行 CRUD,提交的商店评论有问题。 我有这个错误:

Connection.php 第 655 行中的 QueryException:SQLSTATE[23000]:完整性 违反约束:1048 列 'user_id' 不能为空(SQL: 插入comments (content, user_id, product_id, article_id, updated_at, created_at) 值(我的评论,, , , 2016-06-20 10:37:57, 2016-06-20 10:37:57))

我尝试存储带有文本“我的评论”的评论。我的输入“内容”传递给我的控制器,但我的隐藏输入(如“article_id”、“user_id”、“product_id”)没有传递给我的控制器。

评论控制器:

public function store(Request $request)
    {

        if($request->ajax()){
            $comment = new Comment();
            $comment->content = $request->input('content'); 
            $comment->user_id = $request->input('user_id'); 
            $comment->product_id = $request->input('product_id');
            $comment->article_id = $request->input('article_id');  

            $comment->save(); 


            return response()->json([

                "message" => "Comment pubblished!"
            ]);
        }
}

表格评论文章:

{!! Form::open(['route'=>'comment.store'] )!!}   



                                <div class="form-group">
                                    <label for="reply-text" class="sr-only">Commenta</label>


                                    {!! Form::textarea('content', null, ['id'=>'content','class'=>'form-control','rows'=>'3', 'placeholder'=>'Commenta','required'])!!}


                                </div>
                                <input type="hidden" id="token" name="_token" value="{{ csrf_token() }}">
                                {!! Form::hidden('user_id', Auth::user()->id, null,['id'=>'user_id','class' =>'form-control'])!!}

                                {!! Form::hidden('article_id', $article->id, null,['id'=>'article_id','class' =>'form-control'])!!}

                                {!! Form::hidden('article_slug', $article->slug, null,['id'=>'article_slug','class' =>'form-control'])!!}

                                {!!link_to('#', $title='Comment post', $attributes =['id'=>'commento', 'class'=>'btn btn-lg btn-dark btn-outline'], $secure = null)!!} 

{!! Form::close()!!}

comment.js:

$("#commento").click(function(){

    var dato= $("#content").val();
    var dato2= $("#user_id").val();
    var dato3= $("#article_id").val();
    var dato4= $("#product_id").val();
    var route = "http://localhost:8000/comment";
    var token = $("#token").val();

    $.ajax({
        url: route,
        headers:{'X-CSRF-TOKEN':token},
        type: 'POST',
        dataType: 'json',
        data:{
            content: dato, 
            user_id: dato2, 
            article_id: dato3, 
            product_id: dato4
        },


    });

});

【问题讨论】:

  • 您可以尝试将“内容”的类型从 textarea 更改为 hidden,看看会发生什么?它是否会传递给您的控制器?
  • 如果我更改为隐藏,我可以看到我的文本是要写评论,是的,评论文本传递给我的控制器,但其他隐藏的输入(如 user_id)没有传递。正如您所看到的错误,comment.js 可能有问题
  • alert(dato2); 得到什么在点击事件中?
  • 如果是comment.js的问题,隐藏时内容不会传递给控制器​​...

标签: jquery ajax laravel laravel-5.1


【解决方案1】:

将隐藏字段更改为:

{!! Form::hidden('user_id', Auth::user()->id, ['id'=>'user_id','class' =>'form-control'])!!}

{!! Form::hidden('article_id', $article->id, ['id'=>'article_id','class' =>'form-control'])!!}

{!! Form::hidden('article_slug', $article->slug, ['id'=>'article_slug','class' =>'form-control'])!!}

【讨论】:

  • 您在 Form::hidden {{ Form::hidden(name, value, array of attributes }} 的参数中添加了一个额外的 null
猜你喜欢
  • 2017-01-15
  • 2016-01-05
  • 1970-01-01
  • 2016-03-30
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 2016-12-10
相关资源
最近更新 更多