Friday, April 14, 2017

Laravel session variable remove after page load when set by ajax

I have a simple ajax code which saves the category and subcategory id in session. These two variables save in session but on next reload both values does not exist in session. This session issue is only with ajax. I have other points where i am storing and retrieving session and it is working file. Here is my ajax call.

    $("#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');
            }
        }
    });
});

and the function that executes on ajax call is as follows

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();
}

I have tried using file and database session but same problem in both cases. I am using laravel 5.3 Session class is also imported in the class i am using and there are no errors when i use this function.



via Habib Qadoos

Advertisement