无法使用AJAX将数据发送到Laravel Controller

时间:2016-08-11 06:34:23

标签: javascript jquery ajax laravel

我试图从我的数据库中分离一些数据。我试图用Ajax向我的控制器发送2个不同的数据但是无法实现。我需要domain_idtag_id

现在看起来如何:

@foreach($domains as $domain)
    <tr>
        <td>
            @foreach($domain->tags as $tag)
                <span><a href="#" data-tag-id="{{ $tag->id }}"
                         data-domain-id="{{ $domain->id }}">{{ $tag->name }}</a></span>
            @endforeach
        </td>
    </tr>
@endforeach

现在我在domain_id标记中有tag_id<a>。我试图用Ajax将它们发送到我的控制器,将它们从我的数据透视表中分离出来就是这样。

JS代码:

$('a[data-tag-id]').click(function () {
    var tag_id = $(this).attr('data-tag-id');
    var domain_id = $(this).attr('data-domain-id');
    $.ajax({
        url: 'detaching',
        type: 'GET',
        data: {tag_id: tag_id, domain_id: domain_id},
        dataType: 'json',
        success: function (data) {
            console.log('worked!');
        }
    });
});

路线代码:

Route::get('detaching', 'DomainController@detach2');

控制器代码:

public function detach2()
{
    $input =  Input::get('all');
    $domain = Domains::findOrFail($input['domain_id']);
    $domain->tags()->detach($input['tag_id']);
}

这不起作用,我甚至不知道是否收到了Ajax代码。我试图console.log()尝试一些事情,但我没有得到任何回报。我甚至不知道代码是否达到控制器功能。我根本不了解Ajax或JS。有人可以帮助我吗?

LITTLE UPDATE

我尝试过一个简单的方法:

$('a[data-tag-id]').click(function () {
    console.log('YES');
});

但是这个避风港也没有用,所以我认为它并没有在点击功能中跳跃。

1 个答案:

答案 0 :(得分:1)

试试这个,
给你的锚标签一个类,如。

<a href="#" class="get-link" data-tag-id="{{ $tag->id }}" data-domain-id="{{ $domain->id }}">{{ $tag->name }}</a>

将路线改为

Route::get('detaching/{tag_id}/{domain_id}', 'DomainController@detach2');

将您的控制器功能设为

public function detach2($tag_id, $domain_id)
{
    //$input =  Input::get('all');
    $domain = Domains::findOrFail($domain_id);
    $domain->tags()->detach($tag_id);
}

将您的JS文件更改为

(function ($) {
    $(document).ready(function () {
        $(document).off('click', '.get-link');
        $(document).on('click', '.get-link', function () {
            var domain_id = $(this).data('domain-id');
            var tag_id = $(this).data('tag-id');
            $.ajax({
                type: 'GET',
                url: 'detaching'+ '/' + tag_id + '/' + domain_id + '/',
                success: function (data) {
                    console.log('worked!');
                },
                error: function (data) {
                    console.log('Error:', data);
                }
            });
        });
    });
})(jQuery);