JQuery 自动完成数据库值不起作用 (Laravel 5)
JQuery autocomplete with database values not working (Laravel 5)
目标:根据数据库中的数据在表单的文本框中显示建议
<script>
$(function() {
$( "#activitynamebox" ).autocomplete({
source: '{{URL('getactivitydata')}}',
minlength: 1, //search after 1 character
select:function(event,ui){
$('#response').val(ui.item.value);
}
});
});
</script>
问题
代码 1: 按预期工作
public function suggestion() {
$return_array = array('1' => 'Example1',
'2' => 'Example2');
echo json_encode($return_array);
}
代码 2: 使用数据库中的值,不起作用:
public function suggestion() {
$term = 'programming';
$array = DB::table('activities')
->where('type', '=', 'Work')
->take(5)
->get();
foreach($array as $element) {
$return_array[$element->id] = $element->name;
}
echo json_encode($return_array);
}
错误:内部服务器错误 500
我决定在一个单独的控制器中从代码 2 回显 $return_array,输出如下:
{'1': 'Example1', '2': 'Example2' }
这与代码 1 中的硬编码相同(我认为)。
为什么代码 1 有效而代码 2 无效?有什么不同?提前致谢
嗯,除非您没有 post 所有代码,否则您的第二个示例有几个错误。
首先,$return_array
是什么,您是从哪里得到的?
你这样做 $return_array[$element->id] = $element->name;
除非你在某处声明 $return_array
,这将是一个空变量,你不能将空变量视为数组。
其次你的输出不一样,你的输出是一个 javascript 对象,你想要的是一组对象。
所以你的第一个例子是输出这个:
[
{'1': 'Example1'},
{'2': 'Example2'}
]
在您的第二个示例中,您输出的是:
{
'1': 'Example1',
'2': 'Example2'
}
一个对象。
所以除了可见的错误之外,不知道你是否有任何错误,这就是你的建议功能应该如何
public function suggestion() {
$term = 'programmer';
$array = DB::table('activities')
->where('type', '=', 'Work')
->take(5)
->get();
$return_array = [];
foreach($array as $element) {
//notice that we are pushing an associative array into the $return_array
$return_array[][$element->id] = $element->name;
}
echo json_encode($return_array);
}
目标:根据数据库中的数据在表单的文本框中显示建议
<script>
$(function() {
$( "#activitynamebox" ).autocomplete({
source: '{{URL('getactivitydata')}}',
minlength: 1, //search after 1 character
select:function(event,ui){
$('#response').val(ui.item.value);
}
});
});
</script>
问题
代码 1: 按预期工作
public function suggestion() {
$return_array = array('1' => 'Example1',
'2' => 'Example2');
echo json_encode($return_array);
}
代码 2: 使用数据库中的值,不起作用:
public function suggestion() {
$term = 'programming';
$array = DB::table('activities')
->where('type', '=', 'Work')
->take(5)
->get();
foreach($array as $element) {
$return_array[$element->id] = $element->name;
}
echo json_encode($return_array);
}
错误:内部服务器错误 500
我决定在一个单独的控制器中从代码 2 回显 $return_array,输出如下:
{'1': 'Example1', '2': 'Example2' }
这与代码 1 中的硬编码相同(我认为)。
为什么代码 1 有效而代码 2 无效?有什么不同?提前致谢
嗯,除非您没有 post 所有代码,否则您的第二个示例有几个错误。
首先,$return_array
是什么,您是从哪里得到的?
你这样做 $return_array[$element->id] = $element->name;
除非你在某处声明 $return_array
,这将是一个空变量,你不能将空变量视为数组。
其次你的输出不一样,你的输出是一个 javascript 对象,你想要的是一组对象。 所以你的第一个例子是输出这个:
[
{'1': 'Example1'},
{'2': 'Example2'}
]
在您的第二个示例中,您输出的是:
{
'1': 'Example1',
'2': 'Example2'
}
一个对象。
所以除了可见的错误之外,不知道你是否有任何错误,这就是你的建议功能应该如何
public function suggestion() {
$term = 'programmer';
$array = DB::table('activities')
->where('type', '=', 'Work')
->take(5)
->get();
$return_array = [];
foreach($array as $element) {
//notice that we are pushing an associative array into the $return_array
$return_array[][$element->id] = $element->name;
}
echo json_encode($return_array);
}