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() 并且它工作得很好。
我有一个简单的 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() 并且它工作得很好。