1. ホーム
  2. c#

[解決済み] 0x800a1391 - JavaScript ランタイムエラー: 'jQuery' は未定義です。

2022-02-24 10:29:38

質問

ASP .Net MVC4 のウェブアプリケーションを持っています。その中で、_Layout.cshtmlにいつものhtmlがあり、順番にデフォルトのHome/Indexをロードしています。すべて正常に動作しています。

インデックスでは、部分的なビューも読み込んでいます。これも問題なく動作しています。問題ありません。

私は以下のサイトのUIツールを使用しています。

http://www.keenthemes.com/preview/index.php?theme=metronic

問題は、HTML4が主体で、MVC用に設計されていないため、私が望むように動作させるために少し手を加えなければならないことです。(非常に基本的なものを超えるものはありません)。例えば、ある部分をインデックスに移動し、Renderbody()を使ってそれをロードすることで、実際のhtml構造は決して変わりません。私はこの作業を何度も行い、閉じタグやその他の問題を引き起こす可能性のあるものを見逃していないことを確認しました。

ここまでは全く問題ありません。すべて正常に読み込まれます。

続けて、2nd Viewとその一部を作成して、他の部分を抽出してみました。いつものように、まずはベイビーステップです。他のコードを抽出する前に、最初のページで小さな "Hello World" を使い、パーシャルでも同じような文字列を使って動作していることを確認しました。そうでした。

今、Home/ActionNameのURLを入力すると、全体がリロードされるのですが、見た目はひどいものです。

0x800a1391 - JavaScript ランタイムエラー: 'jQuery' は未定義です。

以下は、それを明確に定義した私のコードです。

<!-- BEGIN CORE PLUGINS -->
<script src="assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script>
<script>
    jQuery(document).ready(function ()
    {
        App.init(); // initlayout and core plugins
        _Layout.init();
        _Layout.initJQVMAP(); // init index page's custom scripts
        _Layout.initCalendar(); // init index page's custom scripts
        _Layout.initCharts(); // init index page's custom scripts
        _Layout.initChat();
        _Layout.initDashboardDaterange(); //Red date range
        _Layout.initIntro(); //Pop up messages
    });
</script>

メッセージを見るとjQuery(document).readyの部分が指し示されます。

繰り返しになりますが、普通にページを読み込むと、問題なく動作します。Homeと単独で入力しても、問題なく動作します。しかし、Home/AnythingElseと入力したときだけ、このエラーメッセージが表示されます。インデックスファイルに読み込まれるはずのHome/と入力しても、このエラーメッセージが表示されます。

jQueryは定義されているのに、なぜポストバックでこのようなことが起こるのでしょうか?

よろしくお願いします。

解決方法は?

jQueryのsrcをサイトルートからの絶対値に設定してみてください。

<script src="/assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script>

注意 / の前に assets - srcのパスが / を指定すると、ブラウザは現在のパスからの相対パスでアセットを読み込もうとします。 Home からjQueryをロードしようとします。 Home/assets/plugins/...