2013-08-02 85 views
49

我想設置使用jQuery一個cookie:

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

但是,當我打開我的網頁,我收到錯誤「$ .cookie不是一個函數」。這是我知道的:

  • 我已經下載了jQuery cookie插件here
  • 我正在鏈接到jQuery,然後是cookie插件。
  • jQuery和jQuery.cookie都可以正確加載200個OK。

我已經看過其他幾個答案(herehere等),大多數人認爲其重命名cookie.js文件。我已將我的cookie文件「jquery.cookeee.js」重命名,但結果相同。

關於這裏發生了什麼的任何想法?

如果有幫助,我創建的MVC Web應用程序4.

+0

在瀏覽器的控制檯任何異常?也許您的jQuery版本不適合您的jQuery cookie插件版本 – Ian

+2

您是否包含jQuery兩次? (很可能是)。否則,您要麼使用$ .noConflict(),要麼包含另一個覆蓋$的.js文件。 –

+0

只是「$ .cookie不是一個函數」。沒有其他的。 – ElliotSchmelliot

回答

92

如果於$.cookie is not a function問題別人絆倒,這裏是所有可能出現的問題/解決方案,我也碰到過:

  • 該cookie插件沒有下載。 $.cookie不是標準的jQuery功能,需要下載插件here。必要時請確保包含適當的<script>標籤(請參閱下一頁)。
  • 包含cookie腳本時,請確保包含jQuery FIRST,然後是cookie插件。

即你的頭可能包含:

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

然後

<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script> 
  • 在某些情況下,重命名文件的東西,不包括 「.cookie」 已經修復了這個錯誤,顯然是由於Web服務器問題。默認情況下,下載的腳本標題爲「jquery.cookie.js」,但嘗試將其重命名爲「jquery_cookie.js」,如上所示。有關此問題的更多詳細信息是here
  • 最後(這是我的問題),確保你不是多次包括jQuery。如果你是這樣,可能是1. jQuery加載正確2. Cookie插件加載正確3.最後,第二次加入jQuery會覆蓋第一個並破壞cookie插件。

對於任何使用ASP.Net MVC項目的人,請小心使用默認的JavaScript包內容;他們有時很難找到。我第二次加入jQuery是在我的全球佈局頁面之一@Scripts.Render("~/bundles/jquery")之下。我個人更喜歡不要渲染包並根據需要鏈接到JavaScript。

歡呼並特別感謝Kevin B尋求幫助。

+10

我正在使用一個框架,問題是多個包含jQuery。非常感謝 !!! – jrierab

+0

它說github插件不再支持,所以我升級文件到新版本(2.1.0我認爲),它不起作用,所以你必須使用這個答案鏈接到舊版本。 –

+1

對我來說,jQuery不止一次被添加 –

1

檢查您是否將腳本包含在頁眉中,而不是腳註中。特別是在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'); 
11

爲jquery添加此cookie插件。

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

它只在我的wordpress主題中的'wp_head()'函數後添加了腳本後才起作用。 – Rishabh

13

jQuery的cookie的old version已被棄用,因此,如果你得到的錯誤:

$.cookie is not a function 

你應該升級到new version

新版本的API也不同 - 而不是使用

$.cookie("yourCookieName"); 

你應該使用

Cookies.get("yourCookieName"); 
+0

我將我的jquery升級到3.3.1.js.但它不能正常工作。 '未捕獲的引用錯誤:Cookie未定義'在我更改的同一行上生成。有沒有人和我一樣? –

2

您應該添加第一jquery.cookie.js然後添加您的JS或jQuery的你在哪裏使用功能。

當瀏覽器加載網頁第一次加載此jquery.cookie.js,然後你的js或jQuery和現在經過該功能可供使用

0

我有這個問題爲好。我發現有一個$(document).ready函數,其中包含一個$ .cookie在體內的腳本標記中,同時使cookie js加載到頭部,如預期的那樣,導致$(document).ready在cookie之前被處理插件可以完成加載。

我感動體內的cookie的插件加載腳本中的$(文件)。就緒腳本之前和錯誤消失:d

相關問題