gpt4 book ai didi

jquery - ajax 调用后无法在 jquery 中获取更新的 cookie 值

转载 作者:行者123 更新时间:2023-12-01 03:39:00 24 4
gpt4 key购买 nike

我在 mvc 中制作了一个简单的购物车示例。我正在做的是,点击 Add to cart span 后,我正在调用 Controller 操作方法。

然后用购物车中的商品总数更新 cookie 值。但它给了我cookie的初始值。

这是我调用 Controller 操作的 Ajax 代码

   $(document).delegate('.addCart','click', function () {
var getId = parseInt($(this).attr('id').slice(3));
$.ajax({
type: 'GET',
contentType: 'application/json; charset=utf-8',
url: '/Comments/CartDetailsSetGet',
data: { Id: getId },
success: function (data) {
var count = parseInt(data);
if (isNaN(count)){
alert(data);
}else{
var getCookies= @HttpContext.Current.Request.Cookies["CartCookie"].Value;
$('.cartNum').html(getCookies);
}
},
error: function (data) {
alert("Error In Adding Item To Cart");
}
});
});

有一个包含 cartNum 类的 span>,其中我显示了 cart 中的商品总数。

addCart 是我单击以在购物车中添加商品的范围。

这是我的操作方法,这是我的默认操作

HttpCookie ck = new HttpCookie("CartCookie");
public ActionResult Index()
{
if (Request.Cookies["CartCookie"] == null)
{
ck.Value = "0";
Response.SetCookie(ck);
}
IList<Comment> commentList = db.Comments.ToList();
return View(commentList);
}

此操作在 Ajax 请求上被调用。

static List<int?> CartItemsId = new List<int?>();
public string CartDetailsSetGet(int? Id)
{
if (CartItemsId.Contains(Id) != true)
{
CartItemsId.Add(Id);
int getCount = CartItemsId.Count();
System.Web.HttpContext.Current.Request.Cookies["CartCookie"].Value = getCount.ToString();
ck.Expires = DateTime.Now.AddDays(-1);
var d = "";
if (System.Web.HttpContext.Current.Request.Cookies["CartCookie"] != null)
{
d = System.Web.HttpContext.Current.Request.Cookies["CartCookie"].Value;
}
return d.ToString();
}
else
{
return "This Item Is Already In Cart";
}
}

d 中,我得到了更新的 cookie 值,但在 Ajax Success 中,这一行给了我初始值,即 0。

var getCookies= @HttpContext.Current.Request.Cookies["CartCookie"].Value;

最佳答案

在您的脚本中,var getCookies = '@HttpContext.Current.Request.Cookies["CartCookie"].Value'是razor代码,并且在浏览器之前在服务器端进行解析。如果您检查页面源代码,您将看到 getCookies 的值已设置为“0”。

例如,不要尝试设置或更新 cookie,而是在包含要呈现的值的 CartDetailsS​​etGet 中返回 JSON 数据

public JsonResult CartDetailsSetGet(int? Id)
{
if (CartItemsId.Contains(Id) != true)
{
....
int getCount = CartItemsId.Count();
var data = new { count = getCount , message = "some message" };
return Json(data, JsonRequestBehavior.AllowGet);
}
{
var data = new { count = null, message = "This Item Is Already In Cart" };
return Json(data, JsonRequestBehavior.AllowGet);
}
}

脚本

$.ajax({
....
success: function (data) {
if (data.count) {
$('.cartNum').html(data.count);
} else {
alert(data.message);
}
},
....

关于jquery - ajax 调用后无法在 jquery 中获取更新的 cookie 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26140637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com