2009-10-25 6 views
0

특정 쿠키를 삭제하는 중 약간의 문제가 있습니다. 쿠키를 성공적으로 만들었지 만 특정 del id가 invoke되었을 때 쿠키를 삭제하는 것이 문제입니다. 이것은 완전한 코드입니다. 누군가 제가 누락 된 부분을 지적하고, 가능한 경우, 제가 고칠 수있게 도와 주시겠습니까? 심지어 코드를 보지 않고플러그인을 사용한 Jquery 쿠키 삭제

jQuery(function($){ 

    $("a[id^='savebook-']").click(function(){ 
    match = this.id.match(/savebook-(\d+)/); 
    savedclass = $("span#saved-"+match[1]) 
    savedclass.addClass("saved"); 
    var bookid = +match[1]; 

    var delim = "|"; // delimiter for books in cookie 
    // get the previous cookie (if any), split it into an array 
    var books = ($.cookie("books_saved") || "").split(delim); 
    books.push(bookid); 
    $.cookie("books_saved", books.join(delim), { expires: 7, path: '/', domain: 'example.com'}); 
    return false; 
    }); 


     $("a[id^='delbook-']").click(function(){ 
    xmatch = this.id.xmatch(/delbook-(\d+)/); 
var delim = "|"; 
    var delid = xmatch[1]; 
    var books = ($.cookie("books_saved") || "").split(delim); 
    var i = null; 
    for (i = 0; books.length > i; i += 1) { 
     if (books[i].delid === delid) { 
       books_saved.slice(delid) 
      } 
    } 

    }); 





    }); 
+0

나는이 플러그 접속 식을 http://plugins.jquery.com/project/cookie 다만 케이스 – kazey

답변

0

는 - 브라우저가 아래로 닫을 때까지 (자바 스크립트에 의해 트리거 될 때) 쿠키가 실제로 삭제 될 것이라는 보장은 없습니다. 특정 시점에 쿠키 삭제 크로스 브라우저를 보장하는 방법은 서버에서 수행하는 것입니다.

+0

사용하고있다 - 명확하게하기 위하여 - 과자는 삭제를 위해 예정된다, 그러나 (예를 들면) firefox 3.5는 쿠키가 다시 시작될 때까지 그림을 이동. – Maas

+0

이것은 jquery 플러그인에 의해 처리되며 가능합니다. 나는 내 코드에 무슨 문제가 있는지 알지 못했다. 관련 샘플은 입니다. var count = 5; if (books.length> count) { \t \t books = books.slice (books.length - count); \t} 마지막 ID를 제거하여 쿠키의 데이터 크기를 5로 제한합니다. 수정 방법을 알지 못했습니다. 다른 사람은 제발? – kazey

+0

브라우저가 쿠키를 지원하지 않으면 처음부터 만들어지지 않습니다. – kazey

0

쿠키는 과거 '만료 시간'을 설정하여 삭제됩니다.

그러나이 코드에서는 쿠키를 삭제하려고 시도한 것이 없습니다. 당신은 쿠키로 설정된 문자열의 일부를 제거하려고 시도하는 것 같습니다. (지금까지 내가 전혀 읽기 쉽지 않다 미친 들여 쓰기를하는 덕분에, 코드에서 말할 수 있습니다.)

if (books[i].delid === delid) { 
      books_saved.slice(delid) 
     } 

이러한 변수 'books_saved'로 없습니다. 당신은 이것에 대한 자바 스크립트 오류가 있어야합니다. 어둠 속에서 촬영할 오류없이 오류보고/오류 콘솔이 켜져 있는지 확인하십시오.

아마도 '책'배열을 의미 했겠지만 그 문자열은 단지 문자열 일 뿐이며 delid 인 개체가 아닙니다.

.slice은 새 배열로 배열의 일부를 반환합니다. 배열을 변경하지 않습니다. 배열에서 항목을 제거하려는 경우 splice을 원하지만 해당 항목을 전달할 수 없습니다. 어쩌면 당신은 의미 :이 배열에서 지정된 항목을 제거합니다,하지만 여전히 쿠키를 변경하지 않습니다

for (var i= books.length; i-->0;) 
    if (books[i]===delid) 
     books_saved.splice(i, 1); 

, 당신은 단지 savebook 기능처럼 나중에 다시 $.cookie를 호출해야합니다.

+0

PHP를 사용하여이 문제를 해결했습니다. 어쨌든 감사합니다 :) – kazey