Dyanamic下拉列表使用laravel 5

时间:2016-03-24 11:13:04

标签: jquery ajax laravel-5

您好我正在使用dynamic drop down用于州和城市,当我在插入状态ID进入数据库后从下拉列表中选择州和城市时我想要插入州名而不是ID。如果我从(option value=id)动态下拉中删除ID无法正常工作...请建议我

这是我的刀片模板:

<form method="POST" action="{{URL::to('test/insert')}}">  
    <input type="hidden" name="_token" value="{{csrf_token()}}"/>
    <select name="state" id="state" class="form-control input-sm">
        @foreach($states $state)
            <option value="{{$state->id}}">{{$state->name}}</option>
        @endforeach
    </select>

    <select id="city" class="form-control input-sm" name="city">
        <option value=""></option>
    </select>
    <input type="submit" name="submit">
</form>

<script>
    $('#state').on('change',function(e){
        console.log(e);
        var state_id = e.target.value;
        $.get('city?state_id=' + state_id, function(data){
        $('#city').empty();
        $.each(data,function(index,subcatObj){
            $('#city').append('<option value="'+subcatObj.name+'">'+subcatObj.name+'</option>');
        });
    });
});
</script>

这是我的控制器:

public function state()
{
    $states=DB::table('states')->get();
    return View::make('index')->with('states',$states);
}

public function city()
{
    $state_id=Input::get('state_id');
    $cities=DB::table('towns')->where('state_id','=', $state_id )->get();
    return Response::json($cities);
} 

这是我的插入状态和城市控制器:

public function insert() {
    $s_name=array('state'   => Input::get('state'),
                  'city'    => Input::get('city'));
    DB::table('test')->insert( $s_name);
}

1 个答案:

答案 0 :(得分:0)

首先,您可以将select更新为类似内容(例如,添加data-id属性):

@foreach($states $state)
    <option value="{{$state->name}}" data-id="{{$state->id}}">{{$state->name}}</option>
@endforeach

然后,将您的JavaScript函数更新为(即选择新的data-id属性以从ajax获取城市):

$('#state').on('change',function(e){
    console.log(e);
    var state_id = $(this).attr('data-id');
    $.get('city?state_id=' + state_id, function(data){
    $('#city').empty();
        $.each(data,function(index,subcatObj){
            $('#city').append('<option value="'+subcatObj.name+'">'+subcatObj.name+'</option>');
        });
    });
});

然后,提交表单应该为您提供州名而不是ID。