我一直在尝试为我的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