大家好,我在laravel和ajax中使用我的评论系统时遇到问题。实际上,它仅适用于php,但我遇到了ajax问题。
这是错误消息:
状态码:500内部服务器错误。并且错误显示:1/3 SQLSTATE [23000]:违反完整性约束:1048列’post_id’不能为null。
我正在编辑模态中的注释,我可以创建一个新注释,但是问题是使用ajax编辑它。
JS代码:
<script>
var commentId = 0;
var divcomment = null;
$('.edit-comment').click(function(event){
event.preventDefault();
var divcomment = this.parentNode.parentNode;
commentId = $("#comment-post", event.target.parentNode.parentNode).data('commentid');
var commentBody = $(divcomment).find('#display-comment').text();
$('#comment').val(commentBody);
$('#edit-comment').modal();
});
$('#modal-save').click(function(){
$.ajax({
method: 'POST',
url: urlEdit,
data: {
comment: $('#comment').val(),
commentId: commentId,
_token: token,
_method: 'POST'
}
})
.done(function (msg){
$(divcomment).text(msg['new_comment']);
$('#edit-comment').modal('hide');
});
});
</script>
这是HTML:
<article class="row">
<div class="col-md-3 col-sm-3 hidden-xs">
<figure class="thumbnail">
<img class="img-responsive" src="/uploads/avatars/{{ $comment->user->profilepic }}" />
<figcaption class="text-center">{{ $comment->user->name }}</figcaption>
</figure>
</div>
<div class="col-md-8 col-sm-8">
<div class="panel panel-default arrow left">
<div class="panel-body">
<header class="text-left">
<div class="comment-user"><i class="fa fa-user"></i> {{ $comment->user->name }}</div>
<time class="comment-date" datetime="{{ $comment->created_at->diffForHumans() }}"><i class="fa fa-clock-o"></i> {{ $comment->created_at->diffForHumans() }}</time>
</header>
<div id="comment-post" data-commentid="{{ $comment->id }}">
<p id="display-comment">{{ $comment->comment }}</p>
</div>
</div>
<div class="panel-footer list-inline comment-footer">
@if(Auth::guest())
No puedes responder ningún comentario si no has ingresado.
@else
@if(Auth::user() == $comment->user)
<a href="#" data-toggle="modal" data-target="edit-comment" class="edit-comment">Editar</a> <a href="#" data-toggle="modal" data-target="delete-comment" class="delete-comment">Eliminar</a>
@endif
@if(Auth::user() != $comment->user)
<a href="#">Responder</a>
@endif
@endif
</div>
</div>
</div>
</article>
我的编辑模式:
<div class="modal fade" id="edit-comment" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" style="color:#000;">Editar Comentario</h4>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="comment">Editar comentario</label>
<textarea class="form-control" name="comment" id="comment"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn-comment-dismiss btn-comment-modal" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Cerrar</button>
<button type="button" class="btn-comment-edit btn-comment-modal" id="modal-save"><span class="glyphicon glyphicon-ok"></span> Editar</button>
</div>
</div>
</div>
</div>
我的评论更新路线:
Route::POST('comments/', ['uses' => 'CommentsController@update', 'as' => 'comments.update']);
我在CommentController上的更新功能:
public function update(Request $request)
{
$this->validate($request, [
'comment' => 'required'
]);
$comment = Comment::find($request['commentId']);
if (Auth::user() != $comment->user) {
return redirect()->back();
}
$comment->comment = $request['comment'];
$comment->update();
return response()->json(['new_comment' => $comment->comment], 200);
}
最后,在“发布我的帖子”视图“我在其中显示评论”上创建的变量
<script>
var token = '{{ Session::token() }}';
var urlEdit = '{{ url('comments/update') }}';
</script>
更新:
评论表方案:
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->text('comment');
$table->boolean('approved');
$table->integer('post_id')->unsigned();
$table->timestamps();
});
Schema::table('comments', function ($table){
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
});
}
新更新:
错误消息:
误差1/3
SQLSTATE [23000]:违反完整性约束:1048列“ post_id”不能为空
错误2/3
SQLSTATE [23000]:违反完整性约束:1048列“ post_id”不能为空
错误3/3
SQLSTATE [23000]:完整性约束违规:1048列’POST_ID’不能为空(SQL:INSERT INTO
comments
(comment
,approved
,post_id
,user_id
,updated_at
,created_at
)的值(另一个尚未评论,1,…,4,2017年6月4日4点54分34秒,2017-06-04
04:54:34))
附加信息:
一般
Request URL:http://devmedia.dev/comments/update
Request Method:POST
Status Code:500 Internal Server Error
Remote Address:127.0.0.1:80
Referrer Policy:no-referrer-when-downgrade
形成
comment:Another yet comment
commentId:13
_token:Do1gqYfziHij1nAj2CFOWwgdt7UWuubqbawrD5uX
_method:POST
整个评论路线:
Route::post('comments/{post_id}', ['uses' => 'CommentsController@store', 'as' => 'comments.store']);
Route::get('comments/{id}/edit', ['uses' => 'CommentsController@edit', 'as' => 'comments.edit']);
Route::POST('comments/', ['uses' => 'CommentsController@update', 'as' => 'comments.update']);
Route::delete('comments/{id}', ['uses' => 'CommentsController@destroy', 'as' => 'comments.destroy']);
Route::get('comments/{id}/delete', ['uses' => 'CommentsController@delete', 'as' => 'comments.delete']);
我(和安东)的预感似乎是正确的。您有两条冲突的路线。
Route::post('comments/{post_id}', ['uses' => 'CommentsController@store', 'as' => 'comments.store']);
而且当然
Route::post('comments/', ['uses' => 'CommentsController@update', 'as' => 'comments.update']);
由于两条路线使用的路线大致相同,因此laravel首先经过定义的comments.store
路线,这就是您的路线。
有几种方法可以解决此问题。
更改路线顺序:
Route::post('comments/update', ['uses' => 'CommentsController@update', 'as' => 'comments.update']);
Route::post(‘comments/{post_id}’, [‘uses’ => ‘CommentsController@store’, ‘as’ => ‘comments.store’]);
Route::get(‘comments/{id}/edit’, [‘uses’ => ‘CommentsController@edit’, ‘as’ => ‘comments.edit’]);
使用路线约束:
Route::post('comments/{post_id}', [
'uses' => 'CommentsController@store',
'as' => 'comments.store'
])->where([‘post_id’ => ‘[0-9]+’]);;
Route::get(‘comments/{id}/edit’, [‘uses’ => ‘CommentsController@edit’, ‘as’ => ‘comments.edit’]);
Route::post(‘comments/update’, [‘uses’ => ‘CommentsController@update’, ‘as’ => ‘comments.update’]);
值得注意的是,我不知道Facade注册表如何处理外观方法的大小写(上下左右)。因此,为了不引起其他错误,我使用的下大写字母POST
,就像在文档中一样。
问题内容: 我正在尝试为这个工作中的项目学习AJAX。我有一个网站加载病人正在服用的药物。 我递归调用此AJAX函数,以便它将附加一个包含单种药物和7天历史记录的新表。我在使代码在FF和IE中执行时遇到问题。在chrome中效果很好。我有显示xmlhttp.status的警报,这是我得到的: xmlhttp.status == 500(内部服务器错误)。 我注释掉了所有递归,因此将其范围缩小到了这
我想用ajax向laravel中的控制器发送post请求。ajax请求发送两个输入参数,我希望controller在数据库中找到包含第一个参数的列,然后使用第二个输入参数设置name属性。但是我在控制台500中有这个错误消息(内部服务器错误)。 Ajax功能: 路线: 控制器功能: 而且我导入csrf无处不在,因为上次当我做AJAX调用我有这个csrf的问题,下面的代码已经修复了我的问题,但现在不
问题内容: 我有一个将数据发送到控制器的ajax请求,它收集我的下拉菜单的值 错误是 错误的回应是 更新 我的表格 我的ajax请求 我的控制器 它给500内部错误..其笨拙的帮助 问题答案: 您的post方法必须具有属性。删除属性或在视图中添加令牌 并将其传递回ajax函数 请注意,该参数在操作方法中不是必需的
我试着对我的问题进行研究,但一直未能解决它。我正试图在点击时发布Ajax帖子。我已经读到最流行的问题是由于csrf_代币,但我相信我已经妥善处理了? 我不断地发现这个错误: 这是我的密码。。。 我的csrf令牌元标记位于我的主标记顶部。刀身php文件 路线: js函数 } 我的控制器:
我收到以下错误 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请联系服务器管理员,webmaster@strivemedicare.in并告知他们错误发生的时间,以及可能导致错误的任何行为。 有关此错误的详细信息,请参阅服务器错误日志。 此外,尝试使用错误文档处理请求时遇到 500 内部服务器错误错误。
问题内容: 我正在尝试通过ajax将数据提交到数据库。无需使用ajax,提交文章页面可以正常工作。我添加只是为了查看是否发生了任何事情,但是却出现了此错误: POST http:// localhost / laravel-5 / public / articles / create 500(内部服务器错误) 我的代码有什么问题?是JavaScript还是控制器? 编辑:我正在这 C:\ xamp