我是 Laravel 和 Javascript 新手。
我有一条看起来像这样的路线
Route::get('/problems/{problem}/edit', 'AdminController@editProblem');
我的页面看起来像 image
该页面的 HTML 代码是
@foreach($in_contest->problems as $problem)
<div class="list-group">
<a href="#" class="list-group-item">
<i class="fa fa-file fa-lg"></i>
{{ $problem->title }}
<span class="pull-right">
<button onclick="callRoute()" class="btn btn-xs btn-info button">Edit</button>
</span>
</a>
</div>
@endforeach
我为这个 onclick 编写了 javascript 代码
<script type="text/javascript">
function callRoute() {
window.location = '{{ url('/problems/' . $problem->id . '/edit') }}';
}
</script>
现在,每次我单击 P1、P2 或 P3 上的“编辑”按钮时,都会打开 P4 的编辑页面。相同的网址向所有人开放。 我希望当我单击 P1 上的编辑时,它会重定向到 P1 的 $problem-id 编辑页面。其他人也一样。
这个问题的解决办法是什么?
最佳答案
它调用 p4 的原因是,在运行 foreach 循环之后,您基本上是将问题 ID 的最后一次迭代写入 JavaScript。
您可以通过将 View 代码更改为以下内容来避免将 Blade 语法一起添加到您的 JavaScript 中,以便它将当前问题 ID 传递给您的 JavaScript 函数
@foreach($in_contest->problems as $problem)
<div class="list-group">
<a href="#" class="list-group-item">
<i class="fa fa-file fa-lg"></i>
{{ $problem->title }}
<span class="pull-right">
<button onclick="callRoute({{ $problem->id }})" class="btn btn-xs btn-info button">Edit</button>
</span>
</a>
</div>
@endforeach
以及您的 javascript 函数如下
<script type="text/javascript">
function callRoute(problemID) {
window.location = '/problems/' + problemID + '/edit';
}
</script>
关于javascript - 从 <a> 标签内的按钮调用路由 laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799293/