试图在我的javascript(ASP.Net)中循环JSON数据

时间:2016-11-04 22:47:19

标签: javascript json asp.net-mvc underscore.js

我有一个名为route的javascript函数,它应该从我的MVC控制器中获取function getRoute(selectedPart) { var $form = $('#form-create'), $routeDropdown = $('#dd-route'), structure = _.template($('#tmpl-route-list').html()); if (selectedPart) { $form.block(); $.get('@Url.Action("getRouteFromPart", "wip")', { partId: selectedPart }).done(function (response) { $form.unblock(); var html = structure({ routes: response }); $routeDropdown.html(html); }); } else { $routeDropdown.html(structure({ routes: null })); } } 个对象的列表,并将它们插入到我视图的下拉菜单中。

这是功能:

selectedPart

解释

getRoute是来自不同下拉列表的值(此处未显示)。根据在那里选择的内容,"wip"将命中getRouteFromPart"控制器并使用其“routes操作返回一个名为#tmpl-route-list的路由对象列表。然后它被认为是通过名为<% if (routes) { %> <% foreach(var route in routes.routes) { %> <option value="<%= route.routesId %>"> <% route.routesName %> </option> <% } % > <% } %> 的underscore.js模板将该列表放入下拉菜单。

这是模板代码:

routes.routes

解释

routeId指的是 routes 响应对象中的 routes 列表。我正在尝试遍历该列表,并将每个routeName对象的route<option>放入其自己的GET indexname/_search { "aggs": { "count_by_type": { "terms": { "field": "_type" } } }, "size": 0 } 标记中以进行下拉列表。

不用说,它不起作用。在javascript控制台中,它给出了错误“Unexpected token var”。如果我从foreach中删除'var',它会显示“Unexpected token {”。

注意:我在网站的其他部分几乎完全相同,但效果很好。唯一的区别是那里它只有一个对象放在下拉列表中,而这里我试图用一个对象列表来做。显然我的循环或其他东西有问题,但我不知道如何解决它。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

你的模板看起来都错了。 拨打_.forEach的电话在哪里?回调在哪里?

见这里:https://jsfiddle.net/ub25v2c6/1/(打开控制台)。

我将模板更改为下面的代码段并且编译得很好。

var template = `
    <% if (routes) { %>
      <% _.forEach(routes.routes, function (route, i) { %>
          <option value="<%= route.routesId %>">
              <% route.routesName %>
          </option>
      <% }); %>
  <% } %>
`;