Javascript 从控制器到HTML表单的输出
有人能告诉我如何将数据从控制器输出到HTML表单吗。如果用户之前已经点击了链接,我想将锚的标签从“喜欢”改为“喜欢” 这是HTMLJavascript 从控制器到HTML表单的输出,javascript,php,jquery,html,laravel,Javascript,Php,Jquery,Html,Laravel,有人能告诉我如何将数据从控制器输出到HTML表单吗。如果用户之前已经点击了链接,我想将锚的标签从“喜欢”改为“喜欢” 这是HTML 其他职位 @foreach($posts作为$post) @如果(auth()->user()=$post->user) | | @恩迪夫 @endforeach var-token='{{session()->token()}}'; var urlike='{{route('like')}}'; 从表单中获取postid的JavaScript: ... $('
其他职位
@foreach($posts作为$post)
@如果(auth()->user()=$post->user)
|
|
@恩迪夫
@endforeach
var-token='{{session()->token()}}';
var urlike='{{route('like')}}';
从表单中获取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表单吗
公共函数postLikePost(请求$Request)
{
$post_id=$request['postId'];
$is_like=$request['isLike']='true'?true:false;
$post=post::find($post\u id);
如果(!$post){
返回null;
}
$user=Auth::user();
$like=$user->likes()->where('post_id',$post_id)->first();
如果($like){//用户已经喜欢该帖子了
$like->delete();
返回null;//此处html表单中的“Like”输出
}
$like=新的like();
$like->post\u id=$post->id;
$like->user\u id=$user->id;
$like->save();//从这里输出到html中的“like”
返回null;
}
如果用户已经喜欢该帖子,则Like锚定的标签应该从Like变为Like。我将两者都设置为post,然后在
success
块中查询结果并设置为Like
或Like
。比如:
success: function (data) {
document.getElementById("something").innerHTML = "Liked";
}
你可以这样做,根据你的需要改变它
public function postLikePost(Request $request)
{
$post = Post::where('id', $request->get('post_id'))->first();
if(!$post){
return response()->json(['status' => 1, 'message' => 'post not found']);
}
if($post->liked == 1)//change it as per your model
{
return response()->json(['status' => 2, 'message' => 'already liked']);
}
$post->status = 1;
$post->save();
return response()->json(['status' => 3, 'message' => 'liked']);
}
在你的ajax成功中
success: function(response){
if(response.status == 1){
window.alert('Post Not Found')
}
else{
document.querySelector('#likeBtn').innerHTML = 'liked'
}
喜欢按钮
<a href="#" class="like" id="likeBtn" data-postid="{{ $post->id }}">Like</a>
控制器的响应在哪里?您还需要设置ajax请求。@AdityaThakur我想从控制器的注释部分编写更改的指令。假设用户已经喜欢一篇文章,它将被记录在数据库中,Like将被更改为Like。现在,如果同一个用户再次单击Liked按钮,我需要验证数据库中是否已经存在该记录并将其删除(因此我必须从html中获取帖子的唯一id,并检查数据库并将数据发送回html)我不知道如何同时完成这两项工作……可以设置一个ajax请求来同时发布和获取吗?我已经发布了一个示例,说明了如何实现它。