asp.net-mvc - 使用 JSON 显示数据

标签 asp.net-mvc json

我是JSON新手,我正在尝试制作可以单击并显示数据的菜单。 所有对象都是从我的 asp.net mvc 项目的 Controller 返回的。

这是我的代码:

<script language="javascript" type="text/javascript">
  function ViewProduct() {
    var searchVal = $("#txtsearch").val();
    $.getJSON(url, function (data) {
      var mainMenu = $("#content ul#navmenu-v");
      $.each(data, function (index, dataOption) {
        var new_li = $("<li class='level1' id='select_list'><a href='javascript:void(0);' id='" + dataOption.ID + "' class ='selectedcategory'>" + dataOption.Name + "</a>");
        mainMenu.append(new_li);
        $('a#' + dataOption.ID).click(function () {
        var urlGetProByDep = '<%: Url.Content("~/") %>' + "Products/GetProductsByDepList";
        t = dataOption.ID;
        var data = {};
        if (searchVal != "") {
          data.depID = t;
          data.Q = searchVal;
        } else {
          data.depID = t;
        }
      $(".brand_id").empty();
      $.getJSON("ProductListing/Index", data, function (product) {
         $(".brand_id").empty();
         $.getJSON("ProductListing/Index", data, function (product) {
            $.each(product.ja, function (index, value) {
               $(".brand_id").html( value.Name + "</br>" + value.PictureName + "</br>" + value.ID);
            });
         });
      });
   });
}

$(document).ready(function () {
   ViewProduct(); 
});

菜单代码的另一个 block 工作得很好,只是我上面的这个代码块有问题:

      $.getJSON("ProductListing/Index", data, function (product) {
         $(".brand_id").empty();
         $.getJSON("ProductListing/Index", data, function (product) {
            $.each(product.ja, function (index, value) {
               $(".brand_id").html( value.Name + "</br>" + value.PictureName + "</br>" + value.ID);
            });
         });
      });

这是我采用 JSON 对象在我的 View 中显示的 block ,但是当我单击菜单时,它只显示 JSON 对象最后的元素。

这是我的 JSON:

{"ja":
   [
       {"Name":"ABC1","PictureName1":"my image name1","ID":1},   
       {"Name":"ABC2","PictureName2":"my image name2","ID":2}
]}

每个菜单是每个产品的部门。而如果我不循环菜单 block 中的产品数据,我就无法拿部门的ID来查询得到每个部门的产品。

欢迎任何想法或问题,感谢您抽出时间。

最佳答案

您的代码中似乎存在复制和粘贴错误,您将依次对完全相同的网址执行 2 个请求 - 甚至不使用第一个请求的结果。我猜你只想要类似的东西

$(".brand_id").empty();
$.getJSON("ProductListing/Index", data, function (product) {
    $.each(product.ja, function (index, value) {
         $(".brand_id").html( value.Name + "</br>" + value.PictureName + "</br>" + value.ID);
    });
});

但是你的问题是 .html() 方法。您正在循环遍历您的产品,并且每次都将 每个 .brand_id 元素的 html 设置为新值。因此,您看到的结果就是您在上次迭代中为所有元素设置的结果。您需要做的是单独设置每个元素的 HTML,每个元素都有不同的内容。

但是,我宁愿删除所有项目并附加新项目,而不是清空列表项并向其读取新内容(也许您的产品数量会更改每个查询请求):

$(".brand_id").remove();
$.getJSON("ProductListing/Index", data, function (product) {
    var $parent = $("#parent"); // the parent node of the product list
    $.each(product.ja, function (index, value) {
         $parent.append('<li class="brand_id">' + value.Name + '<br />' + value.PictureName + '<br />' + value.ID + '</li>');
    });
});

(编辑)...或者,如果 brand_id 确实是一个 ID:

var $parent = $("#brand_id").empty();
$.getJSON("ProductListing/Index", data, function (product) {
    $.each(product.ja, function (index, value) {
         $parent.append('<div>' + value.Name + '<br />' + value.PictureName + '<br />' + value.ID + '</div>');
    });
});

关于asp.net-mvc - 使用 JSON 显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10424999/

相关文章:

asp.net-mvc - IIS 8 AppPool 使用过多资源,如何找到罪魁祸首?

javascript - 使用 jquery .parseJSON 或 JSON.parse : how to remove quotes from function calls for formatters? 解析 JSON 以与 Highcharts 一起使用

javascript - 如何使用继承代码将这个复杂的 json 对象/数组改进为映射

c# - 无法将 Int 类型转换为 List

c# - MVC 发布不向模型添加值

java - 如何获取 Json 格式的 keycloak 未经授权的响应

java - javers 是否可以忽略 Java 对象的序列更改?

javascript - 如何在带有嵌套 JSON 的 ng-repeat 中使用键值对

c# - 如何将 List<Int> 传递给 SQL Server 存储过程

c# - ASP.NET MVC 模型混淆