![](/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.