【发布时间】:2019-09-25 14:06:06
【问题描述】:
谁能告诉我如何将数据从我的控制器输出到 HTML 表单。如果用户之前已经点击过链接,我想将锚点的标签从“喜欢”更改为“喜欢”。
这是 HTML。
<section class="row posts">
<div class="col-md-6 col-md-3-offset">
<header><h3>other posts</h3></header>
@foreach($posts as $post)
<article class="post">
<p>{{ $post->content }}</p>
<div class="info">Posted by {{ $post->user->username }} on {{ $post->created_at }}</div>
<div class="interaction">
<a href="#" class="like" data-postid="{{ $post->id }}">Like</a>
@if(auth()->user() === $post->user)
|
<a href="#" class="edit" data-postid="{{ $post->id }}">Edit</a> |
<a href="{{ route('post.delete',['post_id' => $post->id]) }}">Delete</a>
@endif
</div>
</article>
@endforeach
</div>
<script>
var token = '{{ session()->token() }}';
var urlLike = '{{ route('like') }}';
</script>
</section>
从表单获取postid的JavaScript:
...
$('.like').on('click', function (event) {
event.preventDefault();
postId = event.target.dataset.postid;
var isLike = event.target.previousElementSibling==null ? true:false;
$.ajax({
method: 'POST',
url: urlLike,
data: {isLike: isLike, postId: postId, _token: token}
})
.done(function () {
//change the page
})
})
...
路线:
Route::post('/like',[
'uses' => 'PostController@postLikePost',
'as' => 'like'
]);
最后,谁能告诉我如何将控制器的输出发送到 HTML 表单?
public function postLikePost(Request $request)
{
$post_id = $request['postId'];
$is_like = $request['isLike'] === 'true' ? true : false;
$post = Post::find($post_id);
if (!$post) {
return null;
}
$user = Auth::user();
$like = $user->likes()->where('post_id', $post_id)->first();
if ($like) { // user already liked the post
$like->delete();
return null; // output to "Like" in the html form here
}
$like = new Like();
$like->post_id = $post->id;
$like->user_id = $user->id;
$like->save(); // output to "Liked" in the html from here
return null;
}
如果用户已经喜欢了帖子,Like 锚的标签应该从 Like 变为 Like。
【问题讨论】:
-
控制器的响应在哪里?您还需要设置您的 ajax 请求。
-
@AdityaThakur 我想编写指令以从控制器的注释部分更改喜欢到喜欢。比方说,如果一个用户已经喜欢了一个帖子,它将被记录在数据库中,并且 Like 将被更改为 Liked。现在,如果同一用户再次单击 Liked 按钮,我需要验证该记录是否已存在于数据库中并将其删除(因此我必须从 html 获取帖子的唯一 id 并检查数据库并将数据发送回 html ) 不知道如何同时做这两个...
-
可以同时设置一个ajax请求来POST和GET吗?
-
我发布了一个示例,说明如何实现它。
标签: javascript php jquery html laravel