【发布时间】:2018-05-22 05:06:29
【问题描述】:
我已经设法通过 typeahead 搜索教程获取自动完成数据,我在其中更改了现在按三列而不是一列搜索的方式。因此,当我开始在搜索字段中输入自动完成显示时:
街道从到到
并基于此,我应该显示该 ID 中的其他数据(该行的 ID,但不显示 ID)。
你可以在我的控制器中看到它的样子:
public function ajaxData(Request $request)
{
$query = $request->get('query', '');
$streets = Street::select('id', 'name')
->where('name', 'LIKE', '%'.$query.'%')
->get();
$results = array();
foreach($streets as $sn) {
$street_numbers = StreetNumber::select('from', 'to')
->where('town_id', Auth::user()->town_id)
->where('street_id', $sn->id)
->get();
foreach($street_numbers as $st) {
$data = array(
'name' => $sn->name." ".$st->from."-".$st->to
);
$results[] = $data;
}
}
return response()->json($results);
}
鉴于我应该从自动完成中进行选择,当我点击提交时,它应该显示城镇、定居点等数据...
但是,如果我尝试使用 $street_numbers 变量,它会显示错误: (2/2) 错误异常 未定义变量:street_numbers
在字段旁边的视图中,我有来自 typeahed 教程的 JQuery:
{!! Form::open(['route'=>'add.index', 'method'=>'GET']) !!}
<div class="col-sm-12">
<div class="panel panel-default">
<div class="panel-heading">Search</div>
<div class="panel-body">
<div class="input-group">
{!! Form::text('search_text', null, array('placeholder' => 'Street from - to','class' => 'form-control','id'=>'search_text')) !!}
<span class="input-group-btn">
{!! Form::button('<i class="fa fa-search"></i>', ['type' => 'submit', 'class'=>'btn btn-default']) !!}
</span>
</div>
</div>
</div>
</div>
{!! Form::close() !!}
<script type="text/javascript">
var url = "{{ route('autocomplete.ajax') }}";
$('#search_text').typeahead({
source: function (query, process) {
return $.get(url, { query: query }, function (data) {
return process(data);
});
}
});
</script>
我非常坚持这一点,不知道如何从这里开始,因为在 JS 或 JQuery 中我是初学者。
在 ajaxData() 函数之前我有 index() 函数,我有:
return view('members.index', compact('towns', 'user', 'activist', 'capillary'));
这是我的观点。
我正在尝试在这样的视图中使用 $street_numbers 变量:
<div class="col-sm-6">
<div class="form-group">
{!! Form::label('', 'Settlement') !!}
{!! Form::select('', [$street_numbers? $street_numbers->settlement->name : null => $street_numbers? $street_numbers->settlement->name : null], null, ['class'=>'form-control', 'readonly']) !!}
</div>
</div>
【问题讨论】:
-
你想在哪里使用
$street_numbers?你到底在哪里得到这个错误? -
我用更多细节编辑了第一个问题,这样你就可以看到我在哪里尝试使用 $street_numbers...
-
您使用
$street_numbers的刀片模板是在members.index还是其他视图中,如果不同,您是如何初始化该视图的? -
我在返回 view('members.index', compact('street_numbers')) 的 ajaxData() 函数之前有 index() 函数;
-
那么这就是错误的原因。您创建
$street_numbers在 ajaxData 中,该变量仅存在于该函数中,您将无法在您的index函数中访问它。将$street_numbers ?更改为isset($street_numbers) ?将停止错误,但我仍然不确定这会给您带来预期的结果。即看起来 $street_numbers 在该上下文中将始终未设置
标签: javascript jquery mysql laravel autocomplete