【问题标题】:Laravel Datatables advanced search - Ajax always returns default value from dropdown listLaravel Datatables 高级搜索 - Ajax 总是从下拉列表中返回默认值
【发布时间】:2017-07-29 18:49:24
【问题描述】:

我一直在尝试按照this 示例为我的 laravel 数据库创建一个下拉过滤器。但是,即使 url 查询正确更改,我的代码也始终从下拉列表中返回默认值,例如 homestead.app/?search_group_filter=variables,但我的代码始终返回 url 的默认值。

php 控制器

public function globalFilter(Request $request)
{
    $tags = Unknown_Tag::groupBy('url');
    $datatables = Datatables::of($tags);

    debugbar::warning($request->get('searchGroup'));//both return url
    debugbar::warning($request->searchGroup);
    if ($name = $request->get('searchGroup')) {
        $datatables->where($request->searchGroup, 'like', 'http://b.scorecardresearch.com/p?c1=9');
    }
    return $datatables->make(true);
}

javascript

<script>
$(function() {
    var table = $('#ut-table');
    table.dataTable({
        processing: true,
        serverSide: true,
        ajax: {
            url: 'http://homestead.app/globalFilter',
            data: function (d) {
                d.searchGroup = $('select[name=search_group_filter]').val();
            }
        },
        columns: [
            { data: 'protocol'},
            { data: 'domain'},
            ...
        ]
    });
    $('#search_group_filter').on('submit', function(e) {
        table.draw();
        e.preventDefault();
    });
});

HTML

<table border="0" cellspacing="5" cellpadding="5">
    <tbody>
    Search
    <tr>
        <form>
        <select name='search_group_filter', id='search_group_filter'>
            <option value='url'>Full URL</option>
            <option value='protocol'>Protocol</option>
            <option value='domain'>Domain</option>
            <option value='path'>Path</option>
            <option value='query'>Full Query</option>
            <option value='variables'>Variables</option>
            <option value='values'>Values</option>
            <option value='occurrences'>Occurences</option>
        </select>
        <button type="submit">search</button>
        </form>
    </tr>
    </tbody>
</table>

编辑: 将我的路线从Route::get('/globalFilter', 'DatatablesController@globalFilter'); 更改为Route::get('/globalFilter/{searchGroup}', 'DatatablesController@globalFilter');,并将我的AJAX 调用更改为http://homestead.app/globalFilter/groupSearch,将组搜索替换为实际值,给了我完全相同的东西。如果我手动更改路线,也不会发生任何变化

【问题讨论】:

    标签: jquery ajax laravel datatables


    【解决方案1】:

    也许是这条线。但不确定。

    $datatables->where($request->searchGroup, 'like', 'http://b.scorecardresearch.com/p?c1=9')
    

    您似乎对那部分进行了硬编码,因此它永远不会改变。

    更新

    在这里找到你的问题

    homestead.app/?search_group_filter=variables
    

    你叫它search_group_filter,而不是searchGroup

    【讨论】:

    • 它是改变的第一部分($request->searchGroup)。另外,如果我打印出 ($request->searchGroup) 它总是返回 url。所以我不认为是这样。第二部分现在是硬编码的,所以我可以一步一步解决问题。
    • 检查我的更新。您使用了错误的名称。 search_group_filter 不是 searchGroup
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2021-12-09
    • 1970-01-01
    • 2014-08-22
    相关资源
    最近更新 更多