Laravel 当 ajax 设置时,会话变量在页面加载后删除

Laravel session variable remove after page load when set by ajax

我有一个简单的 ajax 代码可以在会话中保存类别和子类别 ID。这两个变量保存在会话中,但在下次重新加载时,会话中不存在这两个值。 此会话问题仅与 ajax 相关。我还有其他要存储和检索会话的地方,它是工作文件。 这是我的 ajax 电话。

    $("#search-select-category").on("click", function () {
    console.log("sending ajax");

    $.ajax({
        type: "POST",
        url: $("#select-category-search").prop('action'),
        data: {
            "_token": $("#select-category-search").find('input[name=_token]').val(),
            "category_id": $("input[name='category-search']").val(),
            "subcategory_id": $("input[name='subcategory-search']").val(),
        },
        success: function (response) {
            var response = JSON.parse(response);
            console.log(response.message);
            if(response.error) {
                console.log("error is here");
                $(".search-category-error span").text(response.message);
                $(".search-category-error").show();
            }
            else {
                console.log("selection is good");
                $(".search-category-error").slideDown();
                $(".select-category-modal").modal('hide');
            }
        }
    });
});

在ajax调用时执行的函数如下

public function ajax_select_category_search(Request $request) {

    $error = false;
    $message = "";

    if (empty($request->category_id) || empty($request->subcategory_id)) {
        $error = true;
        $message = "Category or Sub Category is not selected";
    }

    if ($error == false) {
        session(['category_search' => $request->category_id]);
        session(['subcategory_search' => $request->subcategory_id]);
    }

    $response['error'] = $error;
    $response['message'] = $message;

    echo json_encode($response);
    die();
}

我尝试过使用文件和数据库会话,但在这两种情况下都存在同样的问题。我正在使用 laravel 5.3 Session class 也被导入到我正在使用的 class 中,并且当我使用这个函数时没有错误。

原因是我在 php ajax 函数中有一个 die() 。我不知道为什么在 ajax 调用中有 die() 时删除添加的会话。但是我删除了 die() 并且它工作得很好。