0

ユーザーがログイン ボタンをクリックすると、単一ページの Web サイトにログイン ページを読み込む次のコードがあります。この場合の href は MVC4 コントローラーを呼び出し、HTML を含む部分ビューを返します。

$('#loginLink')
   .click(function () {
      var $link = $(this);
      var href = $link.attr('data-href');
      $('#article').load(href);
   }
   return false;
});

ただし、サーバーから追加の Javascript をロードする必要もあります。ページが読み込まれるときにこれを行う方法を教えてください。私のすべてのJavaScriptがブラウザにロードされたときの開始時ではなく。

ログインページの MVC4 コードは次のとおりです。

@model WebUx.Models.LoginModel

<section id="content" class="grid_9">
    ........
</section>

@Scripts.Render("~/bundles/jqueryval")

JavaScript バンドルの C# コードは次のとおりです。

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
            "~/Scripts/jquery.unobtrusive*",
            "~/Scripts/jquery.validate*"));

スクリプトがレンダリングされても、Chrome 開発者ツールで確認すると、Web ページに追加されていないようです。理想的には、それらをインラインにしたくありません。ブラウザーが js キャッシュに対してチェックできる通常の js としてロードしたいと思います。

4

2 に答える 2

1

スクリプトは実際に追加されます。$.validator.unobtrusive.parse特定のケースでは、jquery の控えめな検証スクリプトを追加していますが、新しいコンテンツを DOM に挿入した後にメソッドを呼び出していないため、それらは機能しないと思います。

したがって、目立たない検証フレームワークを使用して、新しく追加されたすべての要素を DOM に登録したことを確認してください。

$('#loginLink').click(function () {
    var $link = $(this);
    var href = $link.attr('data-href');
    $('#article').load(href, function() {
        $('form').removeData('validator');
        $('form').removeData('unobtrusiveValidation');
        $.validator.unobtrusive.parse('form');
    });
    return false;
});
于 2012-12-30T13:10:21.223 に答える
0

ajax で読み込んだコードを実行するには、そのコードで新しいタグを作成し、それをページに追加します。例えば ​​:

    $("#article").append("<script type='text/javascript' src='script.js'></script>");

"script.js" のコンテンツを実行する必要があります (ページに ID "#article" を持つ要素がある場合)。IE では、スクリプトを実行したいときにタグをページに追加する必要があります (script タグで .load を使用することはできません)。

于 2012-12-30T13:33:52.573 に答える