2014-04-10 128 views
0

如果有控制器,該指數函數:laravel 4 PAGINATE get函數返回JSON

public function getIndex() { 
    return View::make('web.index') 
     ->with('projects', Project::orderBy('id', 'DESC')->paginate(8)); 
} 

在我看來有foreach循環

@foreach($projects as $project) 
<a href="like/{{$project->id}}" class="action like {{$liked}}"> 
    {{$project->likes}} 
</a> 
@endforeach 
<div class="pagination"> 
    {{$projects->links()}} 
</div> 

的getLike功能:

public function getLike($id) { 
    if(Cookie::get('like_'.$id) != 'true') 
    { 
     $project = Project::find($id); 
     $project->increment('likes'); 
     $cookie = Cookie::forever('like_'.$id, 'true'); 
     $s = array(
      'status' => 'success' 
     ); 

     $response = Response::json($s); 
     $response->headers->setCookie($cookie); 
     return $response; 
    } 
    $response = array(
     'status' => 'error' 
    ); 
    return Response::json($response); 
} 

阿賈克斯請求:

$(".like").on("click", function(){ 
    $.get(
     $(this).prop('href'), 
     { 
     }, 
     function(data) { 

      if(data['status'] == 'error') 
      { 
       alert("Already Liked"); 
      } 
      else { 
       alert('Like'); 
      } 
     }, 
     'json' 
    ); 
    return false; 
}); 

getLike()函數完美地工作!(使用ajax來收集數據),但是當頁面2重新加載時(使用無限滾動),getLike函數返回帶有json文本的空白頁面。 幫助...

+0

您是否啓用了錯誤reporing並顯示錯誤? AJAX請求(瀏覽器控制檯)返回的內容是什麼?檢查你的ajax請求的響應狀態。 – Rolice

+0

@Rolice是在我的app.php中設置'debug'=> true,這是Ajax請求: $(「。like」)。on(「click」,function(){ $ .get( $ (本).prop( 'href' 屬性), { }, 功能(數據){ 如果(數據[ '狀態'] == '錯誤') { 警報( 「已喜歡」); } 其他{ 警報( '喜歡');} } , 'JSON' ); 返回FALSE; }); – user3519234

+0

和響應狀態? – Rolice

回答

0

這種方法有幾個問題。

  1. 你做了一個GET請求來製作一個。我建議去了解REST原則。
  2. 您對PHP進行JS ajax調用以設置cookie。我不是JS大師,但是你可以將你的喜歡存儲在LocalStorage中,或者直接從JS中設置cookie。無需爲相同的功能創建PHP端點。
  3. 如果你寫PHP,使用這個:return Response::json($data)->withCookie($cookie)。在Laravel這裏餅乾

更多信息:http://laravel.com/docs/requests#cookies

+0

另外,我可能是錯的,但使用jQuery的'prop'方法來獲得'href'屬性也不正確 - 它應該是'attr'。至少根據我可以看到的有關'prop'的文檔和示例。 – alexrussell

+0

@hannesvdvreken這個應用程序將只藪電腦爲什麼使用cookie IM共享同一個IP多數民衆贊成使用。你會怎麼做?如果沒有GET請求,就像動作一樣?(我還需要編寫php來更新數據庫中的Like計數器) – user3519234

+0

所以你正在服務器上做些什麼來保持喜歡的狀態。那很好。但是,不要檢查cookie,然後檢查數據庫。否則,當用戶更改瀏覽器時,他的喜好將消失。 執行POST或PUT操作會更好地遵循Web開發的標準。 – hannesvdvreken