2013-06-25 87 views
0

我喜歡加載使用jQuery這樣的頁面片段:如何在Laravel 4中使用jQuery加載頁面片段?

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

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

}); 

這可能嗎?我的頁面左側有一個帖子標題列表。當用戶點擊帖子標題時,我想在右側加載頁面片段以及帖子的所有細節。作者,評論等等都在同一頁面上。

回答

0

jQuery的load方法實際上是一個AJAX調用,因此您必須設置一個可輸出視圖的路徑。事情是這樣的:

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

然後,在你的代碼,你必須:

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

哪個叫我的路線:

$('.title' + nid).click(function() { // Use the route's name you setup 
    $('.loadNest').load('{{ URL::route('postDetailsView') }}'); 
}); 
+0

沒有能夠得到它的工作。你能夠在你的最終測試成功嗎? – Danaia

+0

我以前沒有見過在這方面使用過的'do'。有沒有特別的理由在這裏使用它? – Danaia

+0

'do'是'Closures'用於控制器的方法。 – rmobis

0

我使用這個jQuery代碼解決了這個問題像這樣:

Route::get('getNest', array('as' => 'getNest', 'uses' => '[email protected]')); 

The n在我的控制器中,我做到了這一點:

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

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

我只需要傳遞參數,我應該很好。謝謝你的幫助Raphael。

0

,我用一個乾淨的解決方案是使用資產在你的JavaScript

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

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

}); 

和設置的路由作爲

Route::get('/postDetails', function() { 
    return View::make('postDetails'); 
}); 
相關問題