Php 如何将数据从刀片视图发送到laravel中的控制器以执行post请求
我正在尝试将最喜欢和最不喜欢的帖子插入收藏夹表中,如果再次单击,则会将其从收藏夹表中删除。我将我的路由放在web.php文件中 控制器中应该在路由中调用的函数没有被调用,我在那里插入Php 如何将数据从刀片视图发送到laravel中的控制器以执行post请求,php,jquery,laravel,laravel-blade,Php,Jquery,Laravel,Laravel Blade,我正在尝试将最喜欢和最不喜欢的帖子插入收藏夹表中,如果再次单击,则会将其从收藏夹表中删除。我将我的路由放在web.php文件中 控制器中应该在路由中调用的函数没有被调用,我在那里插入dd()方法来测试它,所以我猜问题出在表单操作中,而不是发送数据 <body> ... @foreach ($posts as $post) <div class="column"> @if ($post->showstar == true)
dd()
方法来测试它,所以我猜问题出在表单操作中,而不是发送数据
<body>
...
@foreach ($posts as $post)
<div class="column">
@if ($post->showstar == true)
<form action="/favorites/delete" method="post">
<span class="foo fa fa-star checked"></span>
</form>
@endif
<h2>{{$post->title}}</h2>
<img src={{$post->url}} >
</div>
@endforeach
</body>
<script>
$(document).ready(function () {
$("form").on("click", ".foo", function () {
if ($(this).hasClass("checked")) {
$(this).removeClass("checked");
} else {
$(this).addClass("checked");
}
});
});
</script>
路线:
Route::post('/favorites', 'FavoritesController@view');
Route::post('/favorites/delete', 'FavoritesController@delete');
Route::post('/favorites/fetch', 'FavoritesController@fetch');
您需要一个类似的函数ajax,以将数据发送到控制器:
class FavoritesController extends Controller
{
public function index()
{
return view('Favorites', ['favs' => Favorite::where('user_id', '1')->get()]);
}
public function view(Request $request)
{
dd("hello");
$fav = new Favorite();
$fav->user_id = $request->get('userid');
$fav->post_id = $request->get('postid');
$fav->save();
}
public function delete(Request $request)
{
dd("bye");
$fav = new Favorite();
$dfav = $fav->where('id', $request->id);
$dfav->delete();
return view('favorites');
}
public function fetch(Request $request)
{
$fav = new Favorite();
$favs = $fav->where('user_id', $request->user_id);
return view('favorites', compact('favs'));
}
}
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url:'youUrl',
data:{'youData':"YourValueData"},
type:'post',
success: function (response) {
alert(response);
},
error: function(x,xs,xt){
alert(x);
}
});
您可以尝试简单的html表单提交
<form action="/favorites/delete" method="post">
@csrf
<input type="hidden" name="id" value="{{ $post->id }}">
<button>
<span class="foo fa fa-star checked"></span>
</button>
</form>
@csrf
通过这种方式,您可以将隐藏的输入(案例中的post id)发送到控制器,控制器将删除它。您似乎没有提交任何内容。单击span不会以本机方式提交表单,即使提交了表单,表单中也没有任何数据或操作可以建议您喜欢/不喜欢哪个帖子。请您从
web.php
文件中显示您的路线,以及控制器中的代码。完成后,我的问题是如何将数据发送到控制器您需要将@csrf
放在表单