laravel 中多个下拉值的第二个下拉值显示未定义值

Undefined value shows in the second dropdown value for multiple dropdown value in laravel

我只想使用 1 table 制作多个下拉菜单。我没有收到任何错误,但是当我 select 第一个下拉值时,第二个下拉值显示 undefined 值。我错过或错了哪一部分?

控制器:-

public function index(Request $req)
{
    $shiftpattern = ShiftPattern::all();

    return view('admin.usershiftpattern',
        compact('shiftpattern'));
}

public function findSapCode(Request $request)
{
    $data=ShiftPattern::select('code','id')->where('id',$request->id)->take(100)->get();
    return response()->json($data);
}

查看:-

<div class="col-md-3">
                            <select class="shiftPatternID" name="inputShiftPatternID" id="inputShiftPatternID" required style="width: 100%">
                                <option value="" hidden disabled selected>Please Select</option>
                                @foreach($shiftpattern as $singleshiftpattern)
                                    <option value="{{$singleshiftpattern->id}}">{{$singleshiftpattern->id}} - {{$singleshiftpattern->code}}</option>
                                @endforeach
                            </select>
                        </div>
                    </div>

                        <div class="col-md-3">
                            <select class="sapCode" name="inputSapCode" id="inputSapCode" required style="width: 100%">
                                <option value="0" disabled="true" selected="true">Please Select</option>
                            </select>
                        </div>
                    </div>

脚本内部视图:-

$(document).ready(function(){

        $(document).on('change','.shiftPatternID',function(){

            var cat_id=$(this).val();
            var div=$(this).parent().parent().parent();
            var op=" ";

            $.ajax({
                type:'get',
                url:'{!!URL::to('findSapCode')!!}',
                data:{
                    'id':cat_id
                },
                success:function(data){
                    op+='<option value="0" selected disabled>Please Select</option>';
                    for(var i=0;i<data.length;i++){
                        op+='<option value="'+data[i].id+'">'+data[i].sapCode+'</option>';
                    }

                    div.find('.sapCode').html(" ");
                    div.find('.sapCode').append(op);
                },
                error:function(){

                }
            });
        });
    });

未定义的错误是由于从 object 访问了错误的密钥。您正在访问 sapCode 但它不存在于对象中,因此它抛出 undefined。根据 ajax 响应应该是 code 而不是 sapCode

op+='<option value="'+data[i].id+'">'+data[i].code+'</option>';

如有错误请多多包涵。我的英语很基础。

模型 get() 函数将重新运行 Collection 个实例

控制器

public function findSapCode(Request $request)
{
    return ShiftPattern::select('code','id')->where('id',$request->get(id))->take(100)->get()->toJSON();
}

您可以通过URL::to('findSapCode')查看合集内容

脚本内部视图:-

$(document).on('change','.shiftPatternID',function(){

            var cat_id=$(this).val();
            var div=$(this).parent().parent().parent();
            var op=" ";

            $.ajax({
                type:'get',
                url:'{!!URL::to('findSapCode')!!}',
                data:{
                    'id':cat_id
                },
                success:function(data){
                    data.forEach(function (value, index) {
                        div.find('.sapCode').append('<option value="'+data.id+'">'+data.sapCode+'</option>');
                    });
                },
                error:function(){

                }
            });
        });

使用 foreach() 函数访问每一行数据。