web-dev-qa-db-ja.com

jQuery $ .cookieは関数ではありません

私はjQueryを使用してCookieを設定しようとしています:

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

しかし、ページをロードすると、「$。cookieは機能ではありません」というエラーが表示されます。私が知っていることは次のとおりです。

  • JQuery cookieプラグインをダウンロードしました here
  • 私はjQueryにリンクし、次にCookieプラグインにリンクしています。
  • JQueryとjQuery.cookieの両方が200 OKで正しくロードされています。

他のいくつかの回答( here および here など)を見てきましたが、ほとんどの人はcookie.jsファイルの名前を変更することを提案しました。 cookieファイルの名前を「jquery.cookeee.js」に変更しましたが、結果は同じです。

ここで何が起こっているかについてのアイデアはありますか?

役立つ場合は、MVC 4でWebアプリケーションを作成しています。

65

$.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を2回以上含めないようにしてください。ある場合、1。jQueryが正しくロードされる2. Cookieプラグインが正しくロードされる.

ASP.Net MVCプロジェクトを使用している場合は、デフォルトのjavascriptバンドルが含まれていることに注意してください。見つけるのが難しい場合があります。 jQueryの2番目のインクルードは、@Scripts.Render("~/bundles/jquery")行の下のグローバルレイアウトページの1つにありました。個人的には、バンドルをレンダリングせず、必要に応じてjavascriptにリンクすることを好みます。

乾杯と Kevin B に感謝します。

111

JQuery Cookieの 古いバージョン は廃止されているため、エラーが発生する場合:

$.cookie is not a function

新しいバージョン にアップグレードする必要があります。

新しいバージョンのAPIも異なります-使用するのではなく

$.cookie("yourCookieName");

あなたは使うべきです

Cookies.get("yourCookieName");
24
YPCrumble

jqueryにこのCookieプラグインを追加します。

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

ページのフッターではなくヘッダーにスクリプトが含まれていることを確認してください。特に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
Tatyana

最初にjquery.cookie.jsを追加してから、その関数を使用しているjsまたはjQueryを追加する必要があります。

ブラウザが最初にWebページをロードすると、このjquery.cookie.jsがロードされ、その後jsまたはjQueryがロードされ、その関数が使用可能になります

2
Sanjeev Mishra

JQuery $ .cookieがこの問題を解決する関数ではないことを解決する

 <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>

私もこの問題を抱えていました。本体内のスクリプトタグに$ .cookieを含む$(document).ready関数を使用し、意図したとおりにjqueryの下にcookie jsをロードすると、$(document).ready beeingがcookieの前に処理されることがわかりましたプラグインはロードを終了できます。

$(document).readyスクリプトとエラーが消える前に、本体のcookieプラグインロードスクリプトを移動しました:D

0