我正在使用Laravel和MySQL数据库构建一个简单的联系人数据库。我有一个基本的HTML文件,其中包含一个列出一系列记录的数据表。我想这样做,当我点击一行时,我会根据点击行中记录的ID号进入页面。
我使用@foreach循环填充表格:
<tbody>
@foreach ($people as $person)
<tr>
<td>
<a>{!! link_to_action('ContactController@show', $person->id, $person->id) !!}</a>
</td>
<td>{{ $person->name_first }}</td>
<td>{{ $person->name_middle }}</td>
<td>{{ $person->name_last }}</td>
</tr>
@endforeach
</tbody>
控制器(ContactController)显示:
public function show($id)
{
$person = Contact::findOrFail($id);
return view('contacts.show', compact('person'));
}
现在,我在页面上有一个JavaScript脚本:
<script type="text/javascript">
$(document).ready(function() {
$('#contacts').dataTable();
$('#contacts tbody').on('click', 'tr', function () {
var name = $('td', this).eq(1).text();
alert( 'You clicked on '+name+'\'s row' );
window.location="";
} );
} );
</script>
我假设我只需要插入正确的链接:
window.location="";
如何撰写链接?我尝试使用Laravel语法编写了许多变体,我需要在ContactController中访问将转到contacts / {id}的路由。我试过了:
window.location="{{URL::to('contacts', $person->id)}}";
这不起作用。例如,请让我知道要转到联系人/ 1或联系人2的链接。
答案 0 :(得分:0)
试试这个。
$('#contacts tbody').on('click', 'tr', function () {
var name = $('td', this).eq(1).text();
var link = $('td', this).eq(0).find('a');
alert('You clicked on ' + name + '\'s row');
window.location=link.attr('href');
});
show方法只接受一个参数。
<td>
{!! link_to_action('ContactController@show', $person->id) !!}
</td>
无需将其包装在“a”标签中
答案 1 :(得分:0)
将您的链接添加到tr
元素的数据属性,然后在JavaScript中使用它。
HTML:
<tbody>
@foreach ($people as $person)
<tr data-link='{{ action('ContactController@show', $person->id) }}'>
<td>
<a>{!! link_to_action('ContactController@show', $person->id, $person->id) !!}</a>
</td>
<td>{{ $person->name_first }}</td>
<td>{{ $person->name_middle }}</td>
<td>{{ $person->name_last }}</td>
</tr>
@endforeach
</tbody>
JavaScript的:
$('#contacts tbody').on('click', 'tr', function () {
var name = $('td', this).eq(1).text();
alert( 'You clicked on '+name+'\'s row' );
window.location = this.getAttribute('data-link');
} );