转到ID为onClick的URL()使用Laravel

时间:2015-02-14 03:51:02

标签: javascript php laravel laravel-4 laravel-5

我正在使用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的链接。

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