我正在尝试从点击事件中的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。
答案 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)){