到目前为止,我有一个包含打印头输入框和按钮的用户视图。
我可以设法获取所选用户的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的文章,但我并没有接近这个工作 有没有人知道这样做的好教程还是我做了明显错误的事情?
答案 0 :(得分:7)
我花了一段时间才弄清楚,但这就是我最终得到的结果 这只是返回一个基于通过jQuery ajax传递给控制器方法的单个值(userid)的数据库查询在视图中构造的html。 例如:用户使用Bootstrap Typeahead选择用户,然后(通过ajax)从数据库中获取用户的详细信息并显示。
var details = '<?php echo URL::to('details'); ?>';
$.ajax(
{
url: details,
type: 'GET',
dataType: 'html',
data: {id: selected},
}).done(
function(data)
{
$('#details').html(data);
}
);
public function Details()
{
$id = Input::get('id');
$user = DB::table('Users')->where('UserID', $id)->get();
$data = array('user' => $user);
return View::make('details', $data);
}
@foreach($user as $person)
<label class="key">User ID</label>
<label class="data">{{ $person->UserID }}</label>
<label class="key">Person</label>
<label class="data">{{ $person->FullName, $person->Email, $person->WebSite }}</label>
@endforeach
答案 1 :(得分:3)
当你使用geJson时,你期待一个json响应,所以你需要使用$ .ajax()代替。
另一种解决方案是返回
return Response::json(['view' => View::make('user')->nest('details', $data)]);
然后
$.getJSON(
details,
function(data)
{
$('#details').html(data.view);
}
);
答案 2 :(得分:1)
只是添加SteB所说的内容。要不使用@foreach,如果您只需要/需要1条记录,则应该这样做:
$user = DB::table('Users')->where('UserID', $id)->first();
然后在您的视图中,您应该能够直接引用$ user而不需要@foreach循环。这是一种更好的方法,因为它是您正在检索的一条记录。