Javascript 自动完成所选项目的未定义id
我试图在控制台中打印所选元素的id,但我得到了一个未定义的变量。在我的控制器中,我返回一个json,其中包含来自eloquent的结果。有人知道我做错了什么吗?控制器看起来像:Javascript 自动完成所选项目的未定义id,javascript,php,laravel,jquery-ui,Javascript,Php,Laravel,Jquery Ui,我试图在控制台中打印所选元素的id,但我得到了一个未定义的变量。在我的控制器中,我返回一个json,其中包含来自eloquent的结果。有人知道我做错了什么吗?控制器看起来像: public function search(Request $request) { $search = $request->get('term'); $result = Recipe::where('name', 'LIKE', '%'. $search. '%')-&g
public function search(Request $request)
{
$search = $request->get('term');
$result = Recipe::where('name', 'LIKE', '%'. $search. '%')->get();
return response()->json($result);
}
我的剧本:
<script>
$(document).ready(function() {
$( "#search" ).autocomplete({
source: function(request, response) {
$.ajax({
url: "{{ route('autocomplete') }}",
data: {
term : request.term,
},
dataType: "json",
success: function(data){
console.log(data);
var resp = $.map(data,function(obj){
return obj.name;
});
response(resp);
}
});
},
minLength: 1,
select: function (event, ui) {
console.log(ui.item.id)
},
});
});
</script>
Obj返回,正如您可以看到的,Obj有键id和值,但当我尝试使用它们时,选择了返回未定义的选项
{id: 1, name: "Lorem ipsum", description: "Similique libero quas at qui architecto illum aliq…ut officia rerum dolor illum est quod voluptatem.", required_time: 19, level: 5, …}
尝试使用collection
toJson
方法:
return response()->json($result->toJson());
另外,如果您只需要名称,只需要从数据库中获取名称,那么脚本将增加预先填充字段的时间so console.log(data)返回undefined?否,当我尝试打印所选元素的console.log(ui.item.id)时undefined@JaroslawNowak请提供您的
obj
数据的exmaple。看起来你只发送了一个名称数组,因此没有id
@Twisty更新了我的帖子并添加了返回的obj和示例元素的数据。当我使用toJson时,会出现“未捕获类型错误:无法使用'in'运算符搜索'length'”错误:/Json.parse(数据)在地图内部应该解决此问题错误已解决,但我在尝试打印id时仍然未定义:(
return response()->json($result->toJson());