我的表单上有两个选择框。我的第二个选择框值取决于第一个选择框。我想在我的第二个框中从数据库中检索值。怎么解决? 这是我的观点代码
First: {{ Form::select('first', 1, 10) }}
Second: {{ Form::select('second', $value) }}
我想在选择第一个选择框值时调用此函数。 这是我的控制器代码
public function getValue()
{
$keyword = Input::get('first');
$value = [];
$tables= DB::table('table')
->where('first', '=', $keyword)
->get();
foreach ($tablesas $tables) {
$value[] = $table->value;
}
return View::make('view.index')
->with('value', $value);
}
我应该使用ajax还是javascript。如何解决。请帮助
答案 0 :(得分:0)
如果您想在第一个值更改时获得第二个值,则需要使用第一个值执行ajax请求。在服务器端,当您获得第一个值时,找到与db中的第一个值匹配的第二个值。然后只返回值(laravel自动转换为json)。
在视图中,
First: {{ Form::select('first', $first, 10, array('id' => 'first')) }}
Second: {{ Form::select('second', array(), null, array('id' => 'second')) }}
在JS中,
$(document).on('change', '#first', function () {
var first = $(this).find(':selected').val();
$.post('ajax/get_second', {first: first}, function (data) {
if (data) {
var html = '';
$.each(data, function (key, val) {
html += '<option value="'+key+'">' + val + '</option>';
}
$('#second').html(html);
}
}, 'JSON');
});
在控制器中,
public function getSecond()
{
$first = Input::get('first');
$tables= DB::table('table')
->where('first', $first)
->get(array('key', 'value'));
foreach ($tables as $tables) {
$result[$table->key] = $table->value ;
}
return $result;
}