簡體   English   中英

如何在 laravel 更改時使用 javascript 將變量從視圖傳遞到 controller

[英]How to pass a variable from view to controller using javascript on change in laravel

我想使用 javascript onChange 將變量(id)從視圖傳遞到 controller。 我已經做到了,但是當我做dd時的結果總是一樣的。 就我而言,我總是得到“7”。

這是我的代碼:

查看

 <select id="jurusan_id" type="text" name="jurusan_id" onchange="filterJurusan()">
       <option value disable>Jurusan</option>
         @foreach (App\Models\Admin\Jurusan::all() as $jurusan)
          <option value="{{ $jurusan->id }}">{{ $jurusan->nama_jurusan }}</option>
         @endforeach
    </select>

路線

 Route::get('datasiswa/{id}', 'Admin\SiswaController@filterSiswa')->name('filterSiswa');

JS:

function filterJurusan() {
  window.location.href = "{{ route('filterSiswa', $jurusan->id) }}";
}

Controller:

public function filterSiswa(Request $request, $id)
  {
      dd($id);
  }

我知道我的代碼有問題,但我不知道它是什么。 感謝並為我的語法感到抱歉

我認為您混淆了服務器端和客戶端代碼。 JS 代碼在加載時渲染一次路由。 $jurusan變量設置為 foreach 循環的最后一個 object。 因此id將始終為 7。

您將必須獲得選定的項目。 為此調整 onchange function:

onchange="filterJurusan(this)"

之后就可以拿到值了,就是這樣的id。

function filterJurusan(el) {
 var value = (el.value || el.options[el.selectedIndex].value); 
  window.location.href = '/datasiswa/'+value;
}

現在的問題是,如果您只是想更改位置(如在代碼中),還是如您的 function 名稱所示,想要過濾數據?

這可以更容易和更准確地獲得您的結果..

<form action="{{route('filterSiswa')}}" method="GET">
 <select onchange="this.form.submit()" name="jurusan_id">
   <option value disable>Jurusan</option>
     @foreach (App\Models\Admin\Jurusan::all() as $jurusan)
      <option value="{{ $jurusan->id }}">{{ $jurusan->nama_jurusan }}</option>
     @endforeach
 </select>
 </form>

實際上,您正在將App\Models\Admin\Jurusan::all() as $jurusan 這樣做是在您的 select 中填充選項,但在迭代結束時,最后一條記錄的數據保留在 $jurusan 變量中,您在function filterJurusan()中使用該變量來調用 Z594C103F2C6E04E0C3DAZ018 方法。 您應該獲得jurusanId = document.getElementById('jurusan_id')並將其傳遞給 controller ,例如window.location.href = '/datasiswa/' + jurusanId;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM