В настоящее время я использую ввод в моем блейде и вызов ajax, чтобы передать значение поля ввода функции, которая запрашивает конечную точку. Это вызывает при каждом нажатии клавиши.
Когда я отлаживаю в chrome и проверяю вкладку сети, я вижу, что он успешно возвращает объект из вызова ajax. Проблема в том, что я зацикливаюсь на объекте в списке данных, прикрепленном к полю ввода, и он не заполняется результатами.
Предполагается, что это тип автозаполнения, при котором вызов ajax запрашивает и возвращает результаты, которые будут отображаться и фильтроваться в списке данных. То, как я зацикливаю объект в моем блейде, работает, когда я копирую объект в файл с жестко закодированным значением. Мне интересно, нужно ли мне что-то еще в моем Ajax, чтобы правильно передать его обратно.
Опять же, мой Ajax-вызов успешен и возвращает объект, но что мне нужно сделать, чтобы мой return response()->json($searchResults);
вернулся к списку данных для моего ввода?
controller.php
public function autoComplete(Request $request)
{
if($request->ajax()){
$search_result = $request->search_result;
$service = new service();
$searchResults = $service->getSearch($search_result);
return response()->json($searchResults);
}
}
view.blade.php
<input id ="productInput" class="uk-search-field" type="search" placeholder="search products..." list="returnedProducts">
<datalist id="returnedProducts">
@if ($searchResults->hits)
@foreach($searchResults->hits as $arr)
@foreach($arr as $obj)
<option value="{{$obj->_source->category}}">{{$obj->_source->category}}</option>
@endforeach
@endforeach
@endif
</datalist>
<script type="text/javascript">
//input event handler
$('#productInput').on('input', function(){
if($(this).val() === ''){
return;
}else{
const searchResult = $(this).val();
$.ajax({ url: '/account/autocomplete',
data: {
search_result:searchResult
},
"_token": "{{ csrf_token() }}",
type: "POST",
success: function(response){
console.log(response);
}
});
}
});
</script>
Обновление:
+"took": 3
+"timed_out": false
+"_shards": {#1141 ▶}
+"hits": {#1309 ▼
+"total": 231
+"max_score": null
+"hits": array:10 [▼
0 => {#1191 ▼
+"_index": "products"
+"_type": "product"
+"_id": "1634"
+"_score": 5.7772136
+"_source": {#1214 ▼
+"category": "General 1234:0 - Dark Green 123:25"