如果用户未登录,则AJAX请求无响应 - Laravel

问题描述 投票:1回答:2

我有一个在Laravel 5.5上运行的Web应用程序,我需要使用ajax创建一个购物车(我有理由)。

当用户登录时,所有用户都可以顺利运行。当用户未登录时,我得到一个空的响应。

路线:

Route::post('/shop/add2', 'ShopController@addToCart')->name('add2cart');

ShopController看起来像:

<?php 

    class ShopController extends Controller
    {

      public static function addToCart(){

       $message = "Some message";

       return response()->json(["message"=>$message]);
      }
    }
?>

Jquery是:

var token  = $('[name="_token"]').val();
var var1  = $(this).data('itemcom');
var var2_  = $(this).data('itemvalue');
$.ajax({
      url: '/shop/add2',
      type: 'POST',
      data: {_token: token, identX:var2_, identY:var1 },
      dataType: 'JSON',
      success: function(response) {
        console.log(JSON.stringify(response));
      },
      error  : function(errors){
        console.log(JSON.stringi(errors));
      }
});

我尽我所能,得到419状态代码。我知道,对吧?

php jquery ajax laravel laravel-5
2个回答
0
投票

嗯,我有一个强大的devaju代码419 ......并不是一个好的。我不得不调试半天,因为在fa​​cebook的webhook路由中缺少Csrf令牌。也许你的情况类似?

class VerifyCsrfToken extends Middleware
{
    const FACEBOOK_ROUTE = 'facebook_hook';

    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        self::FACEBOOK_ROUTE,
        self::FACEBOOK_ROUTE . '/*',
        'upload',
        'upload/*',
    ];

我的上传也是如此,这也是由第三方ajax插件完成的。

干杯


1
投票

如果您不介意每个人都可以访问此函数,您可以在Controller的构造函数中向中间件添加一个例外:

public function __construct()
{
    $this->middleware('auth', ['except' => ['addToCart']]);
}
© www.soinside.com 2019 - 2024. All rights reserved.