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.