【问题标题】:Laravel can't use session when set with ajax使用ajax设置时Laravel无法使用会话
【发布时间】:2022-02-16 18:54:54
【问题描述】:

我的控制器.php

$request->session()->put('used_coupons', json_encode($dizi[$cart[0]->cart_id]));
$request->session()->save();
$response = ['result' => true];
echo json_encode($response);

我的阿贾克斯

$('button.481andrb2n1mayore').click(function() {
    const code = $('input#1bwbabchfb4n2eroy').val()
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': jQuery('meta[name="csrf-token"]').attr('content')
        }
    });
    
    $.ajax({
        type: 'POST',
        data: {'n3bqshfia5m1': code, 'amdj5h3b1avzfhfn42ll__': $('input#ey4b1bVDBT4m3n1b48qnabe_______').val()},
        dataType: 'json',
        beforeSend: function() {
            $('input#1bwbabchfb4n2eroy').val('Please wait!');
            $('input#1bwbabchfb4n2eroy').attr('disabled', true);
            $('button.481andrb2n1mayore').attr('disabled', true)
            $('div.couponCodeMessageDiv').css('display', 'none');
        },
        success: function (data) {
            console.log(data)
            if (data.result == false) {
                $('div.couponCodeMessageDiv').css('display', 'block');
                $('div.couponCodeMessageDiv span').html(data.message);
            }
            if (data.result == true) {
                location.reload();
            }
        },
        error: function (data) {
            $('div.couponCodeMessageDiv').css('display', 'block');
            $('div.couponCodeMessageDiv span').html("Error!");
            alert('hata')
            console.log(data);
        },
        complete: function(data) {
            $('input#1bwbabchfb4n2eroy').val('deneme20');
            $('input#1bwbabchfb4n2eroy').attr('disabled', false);
            $('button.481andrb2n1mayore').attr('disabled', false)
        }
    });
})

我可以看到会话,但刷新页面后会话消失了。 如果我更新与会话数据无关的数据库,在此过程中,会话保存成功,但是我不想将数据保留在数据库中或更新。 如何解决这个问题呢? 谢谢。

【问题讨论】:

  • 什么是$request->session()->save()?我认为你不需要那个。
  • 我尝试使用或不使用 $request->session()->save() 但仍然无法正常工作
  • after I refresh the page session is gone 是什么意思?您是否正在触发另一个 AJAX 请求?您正在运行什么代码来确定“会话已消失”?
  • 假设我们是客户,我们想使用优惠券代码,我们将此代码输入输入并单击应用按钮。 ajax 获取代码并通过发布请求发送。然后将优惠券保存到与控制器的会话中。然后控制器将ajax发送到成功json。然后需要刷新页面以使刀片可以向客户显示已应用优惠券。我可以设置会话,但是当我刷新页面时,会话似乎是空的 ("") 我正在检查其他运行 dd(session()->all()); 的路由
  • 如果不刷新页面,我认为不会显示会话消息。据我所知,您不能将会话视为反应属性。如果要在 ajax 请求后传递消息,则需要将其附加到响应本身中

标签: php laravel session


【解决方案1】:

是的,将会话名称从“used_coupons”更改为“usedCoupons”解决了问题。我不知道为什么它通过重命名来解决,这对 laravel 来说并不奇怪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2018-04-04
    • 2016-02-10
    • 2017-01-29
    • 2017-08-06
    相关资源
    最近更新 更多