【问题标题】:like and unlike with javascript and Laravel喜欢和不喜欢 javascript 和 Laravel
【发布时间】:2019-11-03 22:56:29
【问题描述】:

我正在尝试实现一种功能,用户可以喜欢和不同的产品使用 javascript 我遵循了这个Laravel - Favourite / Un-Favourite button 但它对我不起作用,无法点击按钮,关于如何修复的任何想法这个?

路线

Route::get('product/like/{id}', ['as' => 'product.like', 'uses' =>   'LikeController@likeProduct']);
Route::get('product/{product}/unlike','LikeController@destroy')->name('product.unlike');

Javascript

 <script>

function addToFavourites(productid, userid) {
var user_id = userid;
var product_id = productid;

$.ajax({
    type: 'post',
    url: 'product/like/{id}',
    data: {
        'user_id': user_id,
        'product_id': product_id,
    },
    success: function () {
        // hide add button
        $('#addfavourites' + product_id).hide();
        // show delete button
        $('#deletefavourite' + product_id).show();
    },
    error: function (XMLHttpRequest) {
        // handle error
    }
});
}

刀片文件

   @if($product->isLiked)
      <div id="addfavourites{{$product->id}}" onClick="addToFavourites({{$product->id}}, {{ Auth::user()->id }})"> unlike </div>
       @else
       <div id="deletefavourite{{$product->id}}" onClick="deleteFromFavourites({{$product->id}}, {{ Auth::user()->id }})" > like </div>
    @endif

【问题讨论】:

  • 检查您的刀片文件。这是错误的onClick="addToFavourites({{$product-&gt;id}}"
  • 我检查了它并添加了缺少的代码,但仍然无法正常工作@AndriyLozynskiy
  • 检查 ajax url url: 'product/like/{id}',{id} 是什么?
  • {id} 是产品->id @porloscerrosΨ
  • 看起来它被硬编码为'product/like/{id}',。我觉得应该是url: 'product/like/'+product_id,

标签: javascript php laravel laravel-5


【解决方案1】:

让你的路由接受一个发布方法,因为你是通过 Ajax 发布的

Route::post('product/like/{id}', ['as' => 'product.like', 'uses' => 'LikeController@likeProduct']);
Route::post('product/{product}/unlike', 'LikeController@destroy')->name('product.unlike');

并使用 ES6 模板字符串并在 Ajax 请求中添加 CSRF 令牌标头

function addToFavourites(productid, userid) {
    // Redundant
    // var user_id = userid;
    // var product_id = productid;
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    $.ajax({
        method: 'post',
        url: `/product/like/${productid}`, // Use ES6 template and point to the url from root /
        data: {
            'user_id': userid,
            'product_id': productid,
        },
        success: function () {
            // hide add button
            $('#addfavourites' + productid).hide();
            // show delete button
            $('#deletefavourite' + productid).show();
        },
        error: function (XMLHttpRequest) {
            // handle error
        }
    });
}

希望对你有帮助

【讨论】:

  • 如果产品被喜欢,按钮将是unlike,所以如果我点击不同按钮,它会消失并且不会影响数据库,所以它也只是删除不同,如果产品不喜欢按钮显示like 如果我点击赞按钮未点击,这意味着赞按钮未点击,如果是则不会影响数据库,因此它只是更改图标@Saly 3301
猜你喜欢
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 2015-05-13
  • 1970-01-01
  • 2016-04-04
  • 2016-12-31
  • 2020-10-13
相关资源
最近更新 更多