Jquery 通过ajax从Laravel4中的db将数据加载到视图中

Jquery 通过ajax从Laravel4中的db将数据加载到视图中,jquery,laravel,laravel-4,Jquery,Laravel,Laravel 4,到目前为止,我有一个用户视图,其中包含一个打字机输入框和一个按钮 我可以设法获取所选用户的id,并在单击按钮时显示它: $('#load').bind('click', function(e) { alert(selected); }); 现在,我想从数据库中检索所选用户的数据,并将其显示在用户视图中。这是我的jQuery、路由和控制器: var details = '<?php echo URL::to('details'); ?>'; $.getJSON( det

到目前为止,我有一个用户视图,其中包含一个打字机输入框和一个按钮

我可以设法获取所选用户的id,并在单击按钮时显示它:

$('#load').bind('click', function(e)
{
   alert(selected);
});
现在,我想从数据库中检索所选用户的数据,并将其显示在用户视图中。这是我的jQuery、路由和控制器:

var details = '<?php echo URL::to('details'); ?>';
$.getJSON(
    details, 
    function(data) 
    {
        $('#details').html(data);
    }
);

Route::get('details', 'HomeController@Details');

public function Details()
{
    $data = array('name' => 'Ste');
    return View::make('user')->nest('details', $data);
}
我已经在Laravel中阅读了多篇关于AJAX的文章,但还没有接近实现这一点。
有人知道这样做的好教程吗,或者我做了什么明显错误的事情吗?

当您使用geJson时,您需要一个json响应,因此您需要使用$.ajax

另一个解决办法是返回

return Response::json(['view' => View::make('user')->nest('details', $data)]);
然后

$.getJSON(
    details, 
    function(data) 
    {
        $('#details').html(data.view);
    }
);

当您使用geJson时,您需要一个json响应,因此您需要使用$.ajax

另一个解决办法是返回

return Response::json(['view' => View::make('user')->nest('details', $data)]);
然后

$.getJSON(
    details, 
    function(data) 
    {
        $('#details').html(data.view);
    }
);

我花了一段时间才弄明白,但这就是我的结局。 这只是返回一些在视图中构造的html,这些html是根据通过jQueryAjax传递给控制器方法的单值用户ID从数据库查询中生成的。 例如:用户使用Bootstrap Typeahead选择用户,然后通过ajax从数据库中获取用户的详细信息,然后显示

AJAX: 观点: 笔记: 我所有的视图都是刀片模板。 “我的详细信息”视图无法从另一个模板继承no extends'master',这会停止该视图的工作,不知道原因。 我将只返回1条记录,我使用@foreach访问数组,并将每个元素转换为一个对象,可能有更好的方法。
我花了一段时间才弄明白,但这就是我的结局。 这只是返回一些在视图中构造的html,这些html是根据通过jQueryAjax传递给控制器方法的单值用户ID从数据库查询中生成的。 例如:用户使用Bootstrap Typeahead选择用户,然后通过ajax从数据库中获取用户的详细信息,然后显示

AJAX: 观点: 笔记: 我所有的视图都是刀片模板。 “我的详细信息”视图无法从另一个模板继承no extends'master',这会停止该视图的工作,不知道原因。 我将只返回1条记录,我使用@foreach访问数组,并将每个元素转换为一个对象,可能有更好的方法。
只是为了补充SteB所说的。要不使用@foreach,如果您只有/需要1条记录,则应改为:

 $user = DB::table('Users')->where('UserID', $id)->first(); 

然后在您的视图中,您应该能够直接引用$user,而不需要@foreach循环。这是一种更好的方法,因为它是您正在检索的一条记录。

只是为了补充SteB所说的内容。要不使用@foreach,如果您只有/需要1条记录,则应改为:

 $user = DB::table('Users')->where('UserID', $id)->first(); 

然后在您的视图中,您应该能够直接引用$user,而不需要@foreach循环。这是一种更好的方法,因为它是您正在检索的一条记录。

您是否收到任何错误?运行应用程序时会发生什么?我认为$.getJSON用于使用GET HTTP请求从服务器加载JSON编码的数据,但是您正在发送HTML/文本数据。是否收到任何错误?运行应用程序时会发生什么情况?我认为$.getJSON用于使用GET HTTP请求从服务器加载JSON编码的数据,但如果我返回Response::jsonarray'view'=>,则您正在发送HTML/文本数据;从我的控制器中,我可以看到输入框,但只要我使用return-Response::jsonarray'view'=>view::make'details',data;我什么也没得到,知道为什么吗?Response::jsonarray'view'=>view::make'details',$data;您忘记向变量dataSorry添加$,这是一个输入错误,我实际上得到了返回响应::jsonarray'view'=>view::make'details',$data@SteB-我意识到这是一个稍微晚一点的响应,但是当您执行return-response::jsonarray'view'=>view::make'details',$data时,您什么也得不到的原因;这是因为View::make返回一个对象,而不仅仅是内容。要直接返回视图,只需通过以下方法完成:returnview::make'details',$data;然后将jQuery中的数据放入HTML中,而不是data.view。希望有帮助!如果我返回Response::jsonarray'view'=>;从我的控制器中,我可以看到输入框,但只要我使用return-Response::jsonarray'view'=>view::make'details',data;我什么也没得到,知道为什么吗?Response::jsonarray'view'=>view::make'details',$data;您忘记向变量dataSorry添加$,这是一个输入错误,我实际上得到了返回响应::jsonarray'view'=>view::make'details',$data@SteB-我意识到这是一个稍微晚一点的响应,但是当您执行return-response::jsonarray'view'=>view::make'details',$data时,您什么也得不到的原因;这是因为View::make返回一个对象,而不仅仅是内容。要直接返回视图,只需通过以下方法完成:returnview::make'details',$data;然后将jQuery中的数据放入HTML中,而不是data.view。希望有帮助!