Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数据从刀片视图发送到laravel中的控制器以执行post请求_Php_Jquery_Laravel_Laravel Blade - Fatal编程技术网

Php 如何将数据从刀片视图发送到laravel中的控制器以执行post请求

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)

我正在尝试将最喜欢和最不喜欢的帖子插入收藏夹表中,如果再次单击,则会将其从收藏夹表中删除。我将我的路由放在web.php文件中 控制器中应该在路由中调用的函数没有被调用,我在那里插入
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
放在
表单