javascript - 无法使用 AJAX 向 Laravel Controller 发送数据

标签 javascript jquery ajax laravel

我正在尝试从数据库中分离一些数据。我正在尝试使用 Ajax 向我的 Controller 发送 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_idtag_id<a>标签。我正在尝试使用 Ajax 将它们发送到我的 Controller ,将它们从我的数据透视表中分离出来,仅此而已。

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

Controller 代码:

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

这不起作用,我什至不知道是否调用了 gets Ajax 代码。我正在尝试 console.log()有些东西出去了,但我没有得到任何返回。我什至不知道代码是否到达 Controller 功能。我对 Ajax 或 JS 根本没有太多了解。有人可以在那里帮助我吗?

<小时/>

小更新

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

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

但这也不起作用,所以我猜它不会在点击功能中跳转。

最佳答案

试试这个,
为您的 anchor 标记指定一个类。

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

将 Controller 功能更改为

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

关于javascript - 无法使用 AJAX 向 Laravel Controller 发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38888895/

相关文章:

javascript - 浏览器支持拖放文件上传

javascript - mysql更新时Ajax自动更新

javascript - 使用 Vanilla javascript关闭多个编号的div

jquery - SignalR 是否适合替代 jQuery Ajax(或类似的)

javascript - 如何使用 Javascript 或 Jquery 在列表中使用 map 函数

javascript - 使用 JavaScript 更改 future 元素的字体大小

javascript - 如何只读设置用户尝试填充数据的输入旁边的所有输入?

javascript - 如何测试元素是否已经指定了颜色?

javascript - 如何在angularjs2中重置表单状态

javascript - 调度程序年 View