繁体   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