javascript加载序列

时间:2017-04-05 06:27:45

标签: javascript jquery asp.net-mvc-4 razor

我有一个MainView“About.cshtml”,里面有一个脚本标签和一个局部视图。

<script>
    $(function () {}
</script>
<div>
    @Html.Partial("~/Views/Maps/_MapDetailsList.cshtml", Model.saVM)
</div>

在“_MapDetailList.cshtml”部分视图中我引用了另一个脚本ge.js

@Scripts.Render("~/Scripts/ge.js")
<table id="MapDetails">
      .....
  <tr><th>
    <script>setGrowthArray(1, 1);</script>
  </th></tr>
</table>

ge.js

var dictionaryGrowth = new Array();

function setGrowthArray(colIndex, mapDetailId) {
//making a sparse array
dictionaryGrowth[colIndex] = mapDetailId;
}

现在我想在加载页面/表之后将这个dictionaryGrowth数组发送到服务器端

所以我在About.cshtml脚本中执行了以下操作,但没有工作..

<script>
    $(function () {
   $("#MapDetails").load(function () { alert("everything seems fine");});
  }
</script>

另外请告诉我在我的情况下脚本和DOM加载顺序是什么。

更新 可能当前序列是

  1. 执行About.cshtml上的脚本
  2. 执行ge.js
  3. 在部分视图中启动document.ready
  4. 来自DOM内部的javascript函数(setGrowthArray)称为
  5. 现在我要打电话给我的控制器? 如果我在ge.js中写window.onload = ...它永远不会被解雇

1 个答案:

答案 0 :(得分:0)

您可以使用$.post()替换.load(),将setGrowthArray(1, 1)的结果作为发布到服务器的数据传递

<script>
$.post("/path/to/server", {growth:setGrowthArray(1, 1)}, function(data) {
  console.log(data); // response from server
  $("#MapDetails").html(data);
})
</script>