如何从$ .cookie中删除特定值

时间:2016-03-29 08:04:27

标签: jquery arrays cookies

我正在尝试从点击事件中的cookie中删除特定值。我的代码是:

            $("a.js-delete-hotel").on("click", function (e) {
            e.preventDefault();                

            deleteHotelId =  $(this).attr("id");

                hotelIdsArray = $.cookie('hotel-comparison').split(/,/);

                if($.inArray(deleteHotelId, $.cookie('hotel-comparison').split(/,/))){
                    for(var i = hotelIdsArray.length-1; i--;){
                            if (hotelIdsArray[i] === deleteHotelId) hotelIdsArray.splice(i, 1);
                    }
                }

                $.cookie('hotel-comparison', hotelIdsArray);
        }); 

此代码不起作用。它创建了另一个具有相同名称和值的cookie。

3 个答案:

答案 0 :(得分:1)

如果在数组

中找不到该项,则

inArray()返回-1

$("a.js-delete-hotel").on("click", function(e) {
  e.preventDefault();

  var deleteHotelId = $(this).attr("id");

  var hotelIdsArray = $.cookie('hotel-comparison').split(/,/),
    idx = $.inArray(deleteHotelId, hotelIdsArray);

  if (idx > -1) {
    hotelIdsArray.splice(idx, 1);
  }

  $.cookie('hotel-comparison', hotelIdsArray.join());
});

答案 1 :(得分:0)

使用删除cookie

/**
* @View(template = "UserBundle:User:register.html.twig", statusCode = Codes::HTTP_BAD_REQUEST, templateVar = "form")
*
* @param Request $request the request object
* POST Route annotation.
* @Route("/user/{name}/{email}")
* @Method("POST")
* @return FormTypeInterface|View
*/
public function postUserAction(Request $request, $name, $email)
{
    try {

        $newUser = $this->get('user.handler')->post($request);         

        $routeOptions = array(
                'id' => $newUser->getId(),
                '_format' => $request->get('_format')
        );

        return $this->routeRedirectView('get_user', $routeOptions, Codes::HTTP_CREATED);
    } catch (InvalidFormException $exception) {

        return $exception->getForm();
    }
}

答案 2 :(得分:0)

您想要在删除一个ID时使用新的ID值数组更新Cookie吗?

您应该使用新值再次编写cookie,就像最后一样。

从数组中删除id可能更有问题吗?您是否已经调试并验证了在重新编写cookie之前删除了ID?

关于删除数组中的项目,可能看看这个: https://stackoverflow.com/a/3596096/2028628

这一行:

if($.inArray(deleteHotelId, $.cookie('hotel-comparison').split(/,/))){

可以更改为(当您将此值设置为上面一行中的hotelIdsArray时)

if($.inArray(deleteHotelId, hotelIdsArray)){