Laravel框架基於ajax實現二級聯動功能示例

這篇文章主要介紹了Laravel框架基於ajax實現二級聯動功能,結合實例形式分析了Laravel框架ajax數據讀取及聯動菜單的構造與使用技巧,需要的朋友可以參考下

本文實例講述了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、效果:

更多關於Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧彙總

希望本文所述對大家基於Laravel框架的PHP程序設計有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章