![](/img/trans.png)
[英]How to pass a variable view to controller using JavaScript function using URL::action method in laravel 4.2
[英]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.