【发布时间】:2015-07-23 23:40:50
【问题描述】:
目标:根据数据库中的数据在表单的文本框中显示建议
<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 无效?有什么不同?提前致谢
【问题讨论】:
-
在 foreach 之前,尝试:$return_array = [];
-
另外,您可以使用 where 中间没有 '=' 运算符。
-
@rufin 感谢您的建议,但不幸的是结果是一样的
-
使用 try { .. your code .. } catch (\Exception $e) { echo $e->getMessage() } 查看错误。
标签: php database laravel laravel-5 jquery-autocomplete