Laravel DataTables高级搜索-Ajax总是从下拉列表返回默认值



我一直在尝试为我的laravel数据库创建一个下拉过滤器,按照此示例。但是,我的代码始终从下拉列表中返回默认值,即使通过URL查询正确更改,例如 homestead.app/?search_group_filter_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替换组搜索,这使我完全相同。如果我手动更改路线,那么什么都没有改变

也许是这一行。但不确定。

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

看来您已经硬编码了那部分,因此它永远不会改变。

更新

在这里找到您的问题

homestead.app/?search_group_filter=variables

您称其为 search_group_filter,而不是 searchGroup

最新更新