Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要时,如何将javascript加载到单页ASP.NET MVC4网站中?_Javascript_Jquery_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

需要时,如何将javascript加载到单页ASP.NET MVC4网站中?

需要时,如何将javascript加载到单页ASP.NET MVC4网站中?,javascript,jquery,asp.net-mvc-3,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc 3,Asp.net Mvc 4,我有以下代码将登录页面加载到我的 用户单击登录按钮时的单页网站。在本例中,href调用MVC4控制器,这将返回带有HTML的部分视图 $('#loginLink') .click(function () { var $link = $(this); var href = $link.attr('data-href'); $('#article').load(href); } return false; }); 但我还需要加载一些额外的Jav

我有以下代码将登录页面加载到我的 用户单击登录按钮时的单页网站。在本例中,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")

即使脚本呈现,当我使用chrome开发者工具检查时,它们似乎没有添加到网页中。理想情况下,我不希望它们是内联的。我希望他们加载为正常的js,浏览器可以检查其js缓存

脚本实际上已添加。在您的特定情况下,您正在添加jquery unobtrusive验证脚本,我猜它们对您不起作用,因为在将新内容注入DOM后,您没有调用
$.validator.unobtrusive.parse
方法:

因此,请确保已使用不引人注目的验证框架将所有新添加的元素注册到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;
});

要执行使用ajax加载的代码,可以使用代码创建一个新标记,并将其添加到页面中。例如:

    $("#article").append("<script type='text/javascript' src='script.js'></script>");
$(“#文章”)。附加(“”);
应该执行“script.js”的内容(如果页面中有id为“#article”的元素)。
在IE中,当您希望运行脚本时,必须将标记添加到页面中(您不能仅使用.load加载脚本标记)。

嗨,Darin,当我检查Chrome浏览器时,我根本看不到这些脚本。我像这样加载部分页面:.load(href);如果它是一个部分页面,javascript会以正常的方式呈现和包含吗?在这里,我似乎只是将部分页面的内容放入文章DOM元素中。你在哪里检查Chrome浏览器?我希望您不是在浏览HTML页面的源代码(因为在那里您永远不会看到任何使用AJAX加载的内容),而是在查看网络选项卡。我使用开发者>工具并单击源选项卡查看加载的Java脚本。我将清除缓存并查看网络选项卡。谢谢你的帮助。现在一切正常。我想我只是在开发工具上找错了地方。我还有一个稍微相关的问题,我现在就发布。
    $("#article").append("<script type='text/javascript' src='script.js'></script>");