繁体   English   中英

Javascript中的Json MVC3对象值

[英]Json MVC3 Object value in Javascript

我从控制器发送json列表:

 public ActionResult LoadTree()
        {

            List<ListItem> list = new List<ListItem>() {
                new ListItem() { Text = "Keyvan Nayyeri" },
                new ListItem() { Text = "Simone Chiaretta" },
                new ListItem() { Text = "Scott Guthrie" },
                new ListItem() { Text = "Scott Hanselman" },
                new ListItem() { Text = "Phil Haack" },
                new ListItem() { Text = "Rob Conery" }
            };

            return new JsonResult { Data = list };
        }

尝试使用以下方法在我的视图中获取列表:

var text =
            $.ajax({
                url: '/CourseCases/LoadTree',
                dataType: 'json',
                 data: {     },
                cache: false,
                type: 'GET',
                success: function (data) {

                }
            });
            alert(text);

我刚得到[object object]。 如何获取对象的实际值? 提前致谢。

function $.ajax() 不从服务器返回值 ,因此var text = $.ajax()将不起作用。 您需要查看成功处理程序

success: function (data) {
    // data is the result of your ajax request
}

我强烈建议您阅读jQuery.Ajax的更多内容

success(data,textStatus,jqXHR)如果请求成功,将调用的函数。 该函数传递了三个参数:服务器返回的数据,根据dataType参数设置格式; 描述状态的字符串; 和jqXHR对象(在jQuery 1.4.x中为XMLHttpRequest)。 从jQuery 1.5开始,成功设置可以接受一系列函数。 每个函数将依次调用。 这是一个Ajax事件。

在成功函数中,您必须解析json以获取实际数据,例如

var jsObject = JSON.parse(data);

然后访问每个项目,例如jsObject.List [0] .Text等

这里的简单问题。 在您的控制器中,您实际上是将列表分配给响应数据集合名为Data的变量。 仅仅因为您的成功函数带有data参数,并不意味着您在控制器中设置的Data值会自动变为data变量。

由于您的Data列表位于 data对象内部 :您需要执行以下操作:

data.Data

在您的成功功能中。 尝试这个:

success: function(data) {
    alert(data.Data.length);
}

首先,您必须在JsonRequestBehavior = JsonRequestBehavior.AllowGet设置JsonRequestBehavior = JsonRequestBehavior.AllowGet JsonResult

    public ActionResult LoadTree()
    {
      List<ListItem> list = new List<ListItem>() {
                new ListItem() { Text = "Keyvan Nayyeri" },
                new ListItem() { Text = "Simone Chiaretta" },
                new ListItem() { Text = "Scott Guthrie" },
                new ListItem() { Text = "Scott Hanselman" },
                new ListItem() { Text = "Phil Haack" },
                new ListItem() { Text = "Rob Conery" }
            };

      return new JsonResult { Data = list, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }

    <script type="text/javascript">
      $.ajax({
        url: '/Home/LoadTree',
        dataType: 'json',
        data: {},
        cache: false,
        type: 'GET',
        success: function (data) {
          alert(data.length); // 6
          // do whatever with the data
        }
      });
    </script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM