Laravel - 使用Ajax从数据库中获取数据

问题描述:

我试图通过点击按钮来获取数据。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

你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); 
    }); 


    }); 

});