0

我喜欢使用 jQuery 加载页面片段,如下所示:

$(".title" + nid ).click(function() {

   $('.loadNest').load("{{ View::make('postDetails') }}");

});

这可能吗?我的页面左侧有一个帖子标题列表。当用户单击帖子标题时,我想在右侧加载一个页面片段,其中包含帖子的所有详细信息。作者、评论等……都在同一页上。

4

3 回答 3

0

我通过使用这个 jQuery 代码解决了这个问题:

$(".nestTitle").click(function(e){
    $.ajax({
      url: "getNest",
      context: document.body
    }).done(function(fragment) { 
      $(".loadNest").html(fragment);
    });
});

这叫我的路线是这样的:

Route::get('getNest', array('as' => 'getNest', 'uses' => 'NestsController@getNest'));

然后在我的控制器中我这样做了:

    $nid = 105;
    $uid = Auth::user()->id;
    $nests = Nest::with('user')
    ->where('user_id', '=', $uid)
    ->where("id", $nid)
    ->get();

    return View::make('nestItems', compact('nests'));

我只需要传递参数,我应该很好。感谢您的帮助拉斐尔。

于 2013-06-26T21:14:36.643 回答
0

我使用的一个干净的解决方案是在你的 javascript 中使用资产

$(".title" + nid ).click(function() {

   $('.loadNest').load("{{ asset('postDetails') }}");

});

并将路线设置为

Route::get('/postDetails', function() {
    return View::make('postDetails');
});
于 2014-12-04T10:04:39.867 回答
0

jQuery 的load方法实际上是一个 AJAX 调用,所以你必须设置一个输出视图的路由。像这样的东西:

Route::get('ajax/postDetails', array(
    'as' => 'postDetailsView', // This is the name of your route
    'do' => function () {
        return View::make('postDetails');
    }
));

然后,在您的代码中,您将拥有:

$('.title' + nid).click(function() { // Use the route's name you setup
    $('.loadNest').load('{{ URL::route('postDetailsView') }}');
});
于 2013-06-25T22:19:28.470 回答