2015-10-17 137 views
1

我試圖通過點擊按鈕來獲取數據。Laravel - 使用Ajax從數據庫中獲取數據

這是我在我的控制器返回數據:

public function fetch() 
    { 
     $channels = Channel::where('channel', \Auth::user()->username) 
      ->orderBy('created_at','desc')->take(3)->get(); 

     View::share ('channels', $channels); 
    } 

這是jQuery的文件:

​​

「加載請等待」的部分工作,但成功,我不能」讓它提示。我錯過了什麼?

+0

你有你的dataType設置爲HTML,你正在返回一個視圖中的PHP對象。你應該返回$ messages-> toJson();並設置你的ajax dataType:'json',然後用你的javascript解析json來填充你的下拉菜單$ .each(data,function(i,obj){.. – futureweb

+0

like'return response() - > json(['channels '=> $ channels],200;'? – senty

+1

首先你不應該從控制器加載視圖,因爲你只是將數據從你的ajax請求發送回現有的視圖,這就是ajax請求的全部點。 (..用於返回$ messages-> toJson();然後將您的ajax dataType更改爲'json',並使用jquery $ .each函數來填充下拉列表的值和標籤 – futureweb

回答

2

你Laravel方法:

public function fetch() 
{ 
    $username = \Auth::user()->username; 

    $channels = Channel::where('channel', $username)->orderBy('created_at', 'desc')->take(3)->get(); 

    // Return as json 
    return Response::json($channels); 
} 

而JavaScript。

$(document).ready(function() { 

    $('#dropdownMenu').on('click', function() { 

    // Add loading state 
    $('.testdropdown').html('Loading please wait ...'); 

    // Set request 
    var request = $.get('/channels/fetch'); 

    // When it's done 
    request.done(function(response) { 
     console.log(response); 
    }); 


    }); 

});