在laravel中使用ajax实现二级联动

1、html页面:

<div class="form-group">
     <label for="rule">过期规则:</label>
     <select name="rule" id="rule" class="form-control" style="width:20%; margin-right: 40px;">
        <option value="0" rule_id="0">请选择规则</option>
        @foreach($rules as $rule)
             <option value="{{ $rule->value }}" rule_id="{{ $rule->id }}">{{ $rule->name }}</option>
        @endforeach
     </select>

     <label for="time">过期倍数:</label>
     <select name="time" id="time" class="form-control" style="width:20%;">
         <option value="0">请选择倍数</option>
     </select>
     <span id="auto"></span>
</div>

过期规则是在页面加载时,便已经从数据表中取出来放进去了:

$projects = Project::all();
$rules = Rule::all();
return view('key.create', compact('projects', 'rules'));


2、ajax代码:

$("#rule").change(function() {
            $.post("{{ url('key/createTime') }}/"+$(this).find("option:selected").attr("rule_id"), {
                "_token": "{{ csrf_token() }}"
            }, function(data) {
                $("#time").html("<option value='0' name='time'>请选择倍数</option>");
                if(data.value == 0) {  // 当选择请选择规则时,不会向下执行
                    return false;
                }
                $.each(data, function(i, time) {
                    $("#time").append("<option value='" + time.value + "'>" + time.value + "</option>");
                });
                $("#time").append("<option id='auto_time'>自定义</option>");
            });
        });

当过期规则改变时,将id传到createTime()方法中

3、createTime()方法:

public function createTime($rule_id)
      {   // 当选中的为请选择规则时,自己拼一个数据,当success时,判断
          if ($rule_id == 0) {
              return ['id'=>0, 'value'=>0, 'rule_id'=>0];
          }
          $times = Rule::find($rule_id)->time;
          return $times;
      }


对$times的处理:rule和time表是一对多的关系:

 public function time()
    {
        return $this->hasMany(\App\Model\Time::class, 'rule_id', 'id');
    }
4、效果:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值