Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从控制器到HTML表单的输出_Javascript_Php_Jquery_Html_Laravel - Fatal编程技术网

Javascript 从控制器到HTML表单的输出

Javascript 从控制器到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: ... $('

有人能告诉我如何将数据从控制器输出到HTML表单吗。如果用户之前已经点击了链接,我想将锚的标签从“喜欢”改为“喜欢”

这是HTML


其他职位
@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请求来同时发布和获取吗?我已经发布了一个示例,说明了如何实现它。