84

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

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

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

  • ここから jQuery Cookie プラグインをダウンロードしました。
  • jQuery と THEN cookie プラグインにリンクしています。
  • jQuery と jQuery.cookie の両方が 200 OK で正しく読み込まれています。

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

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

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

4

7 に答える 7

131

私が遭遇した可能性のあるすべての問題/解決策は次のとおりです。

1. Cookie プラグインをダウンロードする

$.cookieは標準の jQuery 関数ではないため、プラグインをここからダウンロードする必要があります。必要に応じて適切な<script>タグを必ず含めてください (次を参照)。

2. Cookie プラグインの前に jQuery を含める

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>

3. jQuery を複数回含めないでください

これは私の問題でした。jQuery を複数回含めていないことを確認してください。その場合、次の可能性があります。

  1. jQuery が正しく読み込まれます。
  2. Cookie プラグインが正しく読み込まれます。
  3. jQuery を 2 番目に含めると、最初のものが上書きされ、Cookie プラグインが破棄されます。

ASP.Net MVC プロジェクトを使用している場合は、デフォルトの JavaScript バンドルのインクルードに注意してください。私の 2 番目の jQuery の組み込みは、私のグローバル レイアウト ページの 1 行の下にありました@Scripts.Render("~/bundles/jquery")

4. プラグイン ファイルの名前を変更して、「.cookie」を含めないようにします。

まれに、ファイルの名前を「.cookie」を含まない名前に変更すると、このエラーが修正されました。これは、明らかに Web サーバーの問題によるものと思われます。デフォルトでは、ダウンロードされたスクリプトのタイトルは「jquery.cookie.js」ですが、上記のように「jquery_cookie.js」のような名前に変更してみてください。この問題の詳細については、こちらをご覧ください。

于 2013-08-05T18:24:18.180 に答える
40

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

$.cookie is not a function

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

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

$.cookie("yourCookieName");

あなたが使用する必要があります

Cookies.get("yourCookieName");
于 2016-07-20T23:44:14.140 に答える
27

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

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
于 2016-05-06T05:15:47.483 に答える
2

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

ブラウザが最初にウェブページをロードするjquery.cookie.jsと、これがロードされ、その後jsまたはjQueryがロードされ、その機能が使用できるようになりました

于 2016-10-21T05:00:58.417 に答える
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');
于 2015-08-13T10:41:31.200 に答える