2017-02-01 11 views
2

私はasp.net mvc5プロジェクトで作業します。なぜjsファイルが見つかりませんでしたか?

私はこのコードを持っている:私のアプリケーションがページevrythingが完璧に動作着陸に開始したときに

var _arr = {}; 
function loadScript(scriptName, callback) { 
if (!_arr[scriptName]) { 
    _arr[scriptName] = true; 

    var body  = document.getElementsByTagName('body')[0]; 
    var script  = document.createElement('script'); 
    script.type  = 'text/javascript'; 
    script.src  = scriptName; 
    script.onload = callback; 
    body.appendChild(script); 
} else if (callback) { 
    callback(); 
} 
}; 

//Load Bootstrap JS 
var plugin_path = 'assets/plugins/' 
loadScript(plugin_path + 'bootstrap/js/bootstrap.min.js', function() { 

    Init(false); 

}); 

そして、これを。私は、この行の上に、別のページに移動し

body.appendChild(script); 

私はこのエラーを取得する:この上

bootstrap.min.js 

http://localhost:111/Home/assets/plugins/bootstrap/js/bootstrap.min.js 

アプリケーションは、このファイルを検索しようパス:

http://localhost:111/Home/assets/plugins/bootstrap/js/ 
0このファイルbootstrap.min.jsがこのパスで検索されたランディングページに

ながら:

http://localhost:111/assets/plugins/bootstrap/js/bootstrap.min.js 

とevrythngが正常に動作します。

検索されたパスに問題があると思います。

別のページに移動すると、検索されたパスが変更される理由は何ですか?

+0

どのようにあなたが 'は' scriptName'変数を構築していますsrc? 「ルート」パスを参照する必要があります。サンプル中の 'Home'部分は、デフォルトのMVCルートスキャフォールディングの一部である' controller'という名前です。あなたのルート設定を調整してコントローラ名を削除することはできますが、それはコアの問題にはなりません(作成する新しいフォルダ/パス構造を破壊する)。 Hth。 – EdSF

+0

@EdSF質問を更新します。更新 – Michael

+0

を終えて、あなたのコードが何を解決するかを確認してください(たとえば、 'plugin_path'は何ですか?)。それが何であれ、あなたの "正しい"結果に示されているように '/ assets/plugins/bootstrap/js/bootstrap.min.js'のようなものになるはずです - re:パス参照はアプリケーションフォルダ構造の' root'から始まります。あなたはおそらく、_relative path_を使用しています。これは、その用語が意味するように、要求されている文書に対して_relative_を探すことを意味します。 – EdSF

答えて

1

あなたは(/から開始する必要があります)そのようにパスを割り当てる必要があります:

//Load Bootstrap JS 
var plugin_path = '/assets/plugins/' 

@PeeHaaは、この問題に関する最良の説明を書いた:https://stackoverflow.com/a/21828923/1954204

+0

なぜですか?あなたはあなたの答えを説明できますか? – Michael

+0

が私の答えに追加されました –