jQuery $ .cookie는 함수가 아닙니다.


81

jQuery를 사용하여 쿠키를 설정하려고합니다.

$.cookie("testCookie", "hello");
alert($.cookie("testCookie"));

하지만 내 페이지를로드 할 때 "$ .cookie is not a function"오류가 표시됩니다. 내가 아는 것은 다음과 같습니다.

  • 여기 에서 jQuery 쿠키 플러그인을 다운로드했습니다 .
  • jQuery에 연결하고 쿠키 플러그인을 사용합니다.
  • jQuery와 jQuery.cookie 모두 200 OK로 올바르게로드됩니다.

나는 (여러 다른 답변 살펴 보았다 여기여기에 대부분의 사람들이 cookie.js 파일의 이름을 변경 제안되는 다른 사람의 사이에서). 쿠키 파일의 이름을 "jquery.cookeee.js"로 변경했지만 결과는 동일합니다.

여기서 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까?

도움이된다면 MVC 4에서 웹 애플리케이션을 만들고 있습니다.


브라우저 콘솔에 예외가 있습니까? 사용중인 jQuery 버전이 사용중인 jQuery 쿠키 플러그인 버전에 맞지 않을 수 있습니다.
Ian

2
jQuery를 두 번 포함하고 있습니까? (대부분 그렇습니다). 그렇지 않으면 $ .noConflict ()를 사용하거나 $를 재정의하는 다른 .js 파일을 포함하고 있습니다.
Kevin B

1
$ .fn.jquery는 jquery.js를 포함시킨 직후와 오류가 발생한 코드에서 무엇을 제공합니까?
Kevin B

1
@ElliotSchmelliot 예, 두 번째는 모든 플러그인을 포함하여 첫 번째를 완전히 덮어 씁니다.
Kevin B

4
이미 답을 찾았다면 직접 답할 수 있습니다. 이렇게하면 다른 사람이 답변을 작성하거나 질문을 여는 것을 방지 할 수 있습니다.
surfmuggle

답변:


126

내가 본 모든 가능한 문제 / 해결 방법은 다음과 같습니다.

1. 쿠키 플러그인 다운로드

$.cookie표준 jQuery 기능이 아니며 여기 에서 플러그인을 다운로드해야합니다 . <script>필요한 경우 적절한 태그 를 포함 해야합니다 (다음 참조).

2. 쿠키 플러그인 앞에 jQuery 포함

쿠키 스크립트를 포함 할 때 jQuery FIRST를 먼저 포함한 다음 쿠키 플러그인을 포함해야합니다.

<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script>
<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>

3. jQuery를 두 번 이상 포함하지 마십시오.

이것은 내 문제였습니다. jQuery를 두 번 이상 포함하지 않았는지 확인하십시오. 그렇다면 다음이 가능합니다.

  1. jQuery가 올바르게로드됩니다.
  2. 쿠키 플러그인이 올바르게로드됩니다.
  3. 두 번째 jQuery 포함은 첫 번째 항목을 덮어 쓰고 쿠키 플러그인을 파괴합니다.

ASP.Net MVC 프로젝트를 사용하는 모든 사람은 기본 javascript 번들 포함에주의하십시오. 두 번째 jQuery 포함은 라인 아래의 글로벌 레이아웃 페이지 중 하나에 포함되었습니다 @Scripts.Render("~/bundles/jquery").

4. ".cookie"를 포함하지 않도록 플러그인 파일 이름을 바꿉니다.

드문 경우지만 ".cookie"가 포함되지 않은 파일로 파일 이름을 바꾸면 웹 서버 문제로 인해이 오류가 수정되었습니다. 기본적으로 다운로드 된 스크립트의 제목은 "jquery.cookie.js"이지만 위와 같이 "jquery_cookie.js"와 같은 이름으로 변경해보십시오. 이 문제에 대한 자세한 내용은 여기에 있습니다 .


11
나는 프레임 워크를 사용하고 있었고 문제는 jQuery의 다중 포함에있었습니다. 많은 감사합니다 !!!
jrierab 2015

플러그인이 더 이상 지원되지 않는다고 github에 나와 있으므로 파일을 최신 버전 (2.1.0)으로 업그레이드했으며 작동하지 않았 으므로이 답변이 연결된 이전 버전을 사용해야합니다.
Erik Grosskurth

2
나를 위해 jQuery를 두 번 이상 추가되었습니다
Ardalan Shahgholi에게

"jQuery를 두 번 이상 포함"의견을 보내 주셔서 감사합니다. 7 년 후 문제가 해결되었습니다.
Erik Frantz

36

이전 버전 오류가 있어요 그래서 만약 jQuery를 쿠키의는 사용되지 않습니다 :

$.cookie is not a function

새 버전으로 업그레이드해야합니다 .

새 버전의 API도 다릅니다.

$.cookie("yourCookieName");

당신은 사용해야합니다

Cookies.get("yourCookieName");

2
내 jquery를 3.3.1.js로 업그레이드합니다. 하지만 제대로 작동하지 않습니다. 'Uncaught ReferenceError : Cookies is not defined'가 내가 변경 한 동일한 줄에 생성됩니다. 나와 같은 사람이 있습니까?
종현여

25

이 쿠키 플러그인을 jquery에 추가하십시오.

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

wp_head()내 워드 프레스 테마의 기능 후에 주어진 스크립트를 추가 할 때만 작동했습니다 .
Rishabh

내가 필요한 것은 파일에 대한 간단한 링크뿐이었고 이로 인해 작업이 훌륭하게 수행되었습니다. npm 설치가 모두 필요하지 않았습니다.
Dave

2

페이지 바닥 글이 아닌 머리글에 스크립트를 포함했는지 확인하십시오. 특히 WordPress에서 이것은 작동하지 않았습니다.

wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js', array(), false, true);

마지막 매개 변수는 바닥 글에 스크립트를 포함하고 false (기본값)로 변경해야 함을 나타냅니다. 작동 방식 :

wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js');

2

먼저 추가 jquery.cookie.js한 다음 해당 함수를 사용하는 곳에 js 또는 jQuery를 추가해야합니다.

브라우저가 웹 페이지를 먼저로드 할 때 이것을로드 jquery.cookie.js한 다음 js 또는 jQuery를 로드하면 이제 해당 기능을 사용할 수 있습니다.


0

나도이 문제가 있었다. 나는 의도대로 헤드 BELOW jquery에 쿠키 js 가로 드되는 동안 본문 내부의 스크립트 태그에 $ .cookie를 포함하는 $ (document) .ready 함수를 사용하면 쿠키 전에 $ (document) .ready beeing이 처리된다는 것을 알았습니다. 플러그인이로드를 마칠 수 있습니다.

$ (document) .ready 스크립트 이전에 본문의 쿠키 플러그인로드 스크립트를 이동했는데 오류가 사라졌습니다. : D


0

jQuery $ .cookie가이 문제를 해결하는 기능이 아닙니다. jquery cdn 업데이트에서이 문제를 해결합니다.

 <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
 <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script>

3
이 글을 썼을 때 어디서 취 했나요? 그 단어는 그 순서로 전혀 가지 않습니다.
SHAYNE
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.