链接到页面的特定部分

时间:2018-05-19 07:43:51

标签: php html laravel

我有一个包含大量帖子的div,这些帖子是从数据库动态创建的。 div也有注释工具的输入。发布评论时我没有问题,我使用POST方法。然后我使用return redirect('/');方法重定向到该页面。但它链接到页面的开头,不会给用户留下好印象。用户可能位于页面中间,当他/她发表评论时,他将转到页面的开头,并且必须再次向下滚动。幸运的是,我的div与class等于post_id。那么,是否有任何方法可以转到用户使用该类发布的帖子?

2 个答案:

答案 0 :(得分:1)

将id添加到网址,例如“/#post-id”

答案 1 :(得分:0)

在您正在处理和保存评论的控制器内:

use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\URL;

public function yourCommentSaveFunction()
{
   ...
   //Get the Post ID and store in $postid
   return Redirect::to(URL::previous() . '#' .$postid);

}

这应该可以正常工作。 但最好的方法是使用AJAX发表评论。

  

编辑(按OP请求)

AJAX方法

控制器将类似于:

public function saveComment(Request $request)
{
    //you do the saving part..
    ...
    $comment = $request->comment; 
    //after saving the comment return a json response

    //you can also send other varibales like username, created at etc..
   return Response::json(array(
            'success' => true,
            'comment' => $comment,
        ));
}

路线:

Route::post('/save-comment', [
    'as' => 'save-comment',
    'uses' => 'yourController@saveComment',
]);

你的观点:

<form action="{{ route('save-comment') }}" class="comment-form">
    <input type="text" name="comment">
    <input type="submit" name="submit">
    <input type="hidden" name="_token" value="{{ csrf_token() }}"
    <div class="comment"></div>
</form>
<script>
$('.comment-form').submit(function(event){
    event.preventDefault();
    var comment = $this.val();
    var token = $('.token').val();
    var $url = "{{ route('save-comment') }}";
    $.ajax({
        url: route,
        type: 'POST',
        data: {_token: token, comment: comment},
        dataType: 'JSON',
        success: function (data) {
            $(".comment").append('<div class="new-comment">' +data.comment +'</div>');
        },
        error: function(data) {
           console.log("Something went wrong");
        }
    });
});
</script>

请注意:这只是一个示例代码。