0

我正在创建Add to cart模块。我有Add to cart按钮,当用户单击它时,它将JSON data将该项目注册到 cookie。

这是 item 对象的示例:

item =
     {
     DepartmentID :56,
     CategoryID:117,
     BrandID:19,
     BrandImage:"         ",
     BrandName:"General",
     Quantity:5,
     ID:706
     };

这就是我对 cookie 所做的:

 $('#addToCart').click(function(){
     addObjToCookie('Cart',item);
 });

 function serializeObjToJSON(obj) {
    var json = $.toJSON(obj);
    return json;
 }

 function deserializeJSONToObj(json) {
    var obj = $.evalJSON(json);
    return obj;
 }
 function addObjToCookie(cookieName, obj) {
    var jsonObj = serializeObjToJSON(obj);
    $.cookie(cookieName, jsonObj);
 }

 function getDataFromCookie(cookieName){
    var obj = deserializeJSONToObj($.cookie(cookieName));
    return obj;
 }
  1. $(cookie('Cart'))当用户单击Add to cart按钮时,如何使用以下格式将项目对象附加到:

    [{"DepartmentID":56,"CategoryID":117,"BrandID":19,"BrandImage":"         ","BrandName":"General","Quantity":5,"ID":706},
     {"DepartmentID":56,"CategoryID":117,"BrandID":19,"BrandImage":"         ","BrandName":"General","Quantity":1,"ID":707}];
    
  2. 如何计算Cartcookie 中的项目,在这个例子中结果是2.

  3. 如果其中的项目Cart存在,则增加Quantity+ 1。

任何帮助将不胜感激,谢谢。

4

1 回答 1

1

以下是回答 1 和 2 的调整

function addObjToCookie(cookieName, obj) {

  // When adding see what's in there
  var currentCart = getDataFromCookie( cookieName );

  // Add what's new
  currentCart.push( obj );

  // Save new contents
  $.cookie(cookieName, serializeObjToJSON( currentCart ) );
}

function getDataFromCookie(cookieName){

  var val = $.cookie(cookieName);

  // Make sure this returns something valid if it's not there
  if ( !val ) {
    return [];
  }

  // No need to save off something if you're not doing anything with it
  return deserializeJSONToObj( val );

}

至于#3,在实际保存新的 cookie 内容之前,循环返回值直到找到匹配项,如果你确实修改它而不是推送到数组。

如果您尝试循环但它不起作用,请发布您的尝试。我喜欢帮忙,但不喜欢从头开始编写代码,所以你也可以学习一些。

于 2013-09-03T02:06:27.073 回答