刀片Laravel中未显示Ajax响应

时间:2020-08-17 22:10:54

标签: javascript php laravel

我的代码有一个小问题。

我的表单中有一个下拉字段。我在上面应用了onclick事件。 Onclick,我将ajax调用发送到控制器,在此我调用查询以获取所有年份列表并将其返回给刀片服务器作为响应。

我的代码正在运行,并且可以在“网络”选项卡下的预览中看到ajax响应,但问题是这些值未显示在刀片​​服务器的下拉菜单中。

刀片

   <div class="form-group">
      <select id="regist_year" data-dependent="registration">
             <option selected value=""></option>
       </select>
   </div>

JavaScript

$('#regist_year').on('click', function(e){
    e.preventDefault();
    var _token = $('input[name="_token"]').val();
    var all_years = $(this).data('dependent');

    $.ajax({
        url:"{{ route('getAllyears') }}",
        method:"POST",
        data:{_token:_token,all_years:all_years},

        success:function(result)
        {
             $('#'+all_years).html(result);
        }
    });
});

控制器

public function getAllyears(Request $request)
{

    $all_years = $request->get('all_years');

    $years = DB::table('auto_databases_one')
        ->select('year')
        ->distinct()
        ->orderBy('year', 'ASC')
        ->get();

    $get_years = '<option value="">Select ' . ucfirst($all_years) . '</option>';
    foreach ($years as $row) {
        $get_years .= '<option value="' . $row->year . '">' . $row->year . '</option>';
    }
    echo $get_years;
}

1 个答案:

答案 0 :(得分:1)

好吧,您将hyml放入$('#'+all_years)中,其中$('#regist_year').data('dependent');导致$('#registration'),并且您没有使用该ID的dom

将其更改为

$('#regist_year').html(result);

此外,防止在选择上单击时出现默认值可能会带来严重的后果。例如下拉菜单无法打开,并且鼠标无法选择该选项