.load()中的jQuery .load()

时间:2013-02-22 08:43:05

标签: asp.net-mvc jquery razor

我有3个部分观点

查看1:

//_yard.cshtml
@model Yard
<div>@Model.Name</div>
<div class="yard"></div>

@foreach(var house in Model.Houses)
{
  <script  type="text/javascript">
  $(document).ready(function{
   $(".yard").load("/community/Houses");
  });
  </script>
}

查看2

//_houses.cshtml
@model House
<div>@Model.Name<div>
<div class="house"></div>
@foreach(var level in Model.levels)
{
  <script  type="text/JavaScript">
  $(document).ready(function{
    $(".house").load("/Community/Levels");
  });
  </script>
}

查看3:

//_levels.cshtml
@model Level
<div>@Model.Name<div>
<div class="room"></div>
@foreach(var room in Model.Rooms)
{
  <script  type="text/JavaScript">
  $(document).ready(function{
    $(".room").load("/Community/Rooms");
  });
  </script>
}

上面的示例显示我使用View 1在另一个视图中加载jQuery Load(),然后加载View 2 View 1,然后依此类推, ,第一个load()工作正常,但subsequint加载不会触发。

我认为这是由于$(document).ready();功能未被重置,但是,我不知道如何在每次加载时重置它。

解决了问题 使用MVC,默认模板在页面底部呈现jQuery脚本。我把它移到了顶部,ajax加载了。

我知道这没有意义,但它解决了这个问题。在进行一些调查之后,我会更新这个问题,为什么这样可以解决问题。

1 个答案:

答案 0 :(得分:2)

修改 下面的答案通常很有帮助,但我认为真正的问题是JavaScript中的语法错误。 .load()代码行最后都有一个)。修复此问题,通过检查浏览器中的JavaScript控制台确保没有更多语法错误,然后使用以下建议: - )

考虑$(document).ready();被“重置”是无益的,因为它不是也不能“重置”。

这是一个在DOM第一次完全加载并准备好被JavaScript操纵时触发的事件。当第一次加载网页时,事件只发生一次,并且只发生一次。任何后续的AJAX请求都不会在页面上触发新的$(document).ready();事件。但是,它们会触发其他事件 - 但不是$(document).ready();

从视图2和3中删除$(document).ready();,您的代码将正常运行。 (提示:您应该将JavaScript包装在<script>标记中,否则在某些浏览器中可能会出现一些奇怪的行为。)

AJAX请求完成后触发的事件可能会帮助您:

  • $.ajax();success / error / complete个处理程序。
  • .load();有一个complete处理程序。