【发布时间】: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