1

我正在从我的控制器发送 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);

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

4

4 回答 4

0

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 开始,success 设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。

于 2012-05-22T07:13:14.777 回答
0

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

var jsObject = JSON.parse(data);

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

于 2012-05-22T07:20:06.797 回答
0

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

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

data.Data

在你的成功函数中。试试这个:

success: function(data) {
    alert(data.Data.length);
}
于 2012-05-22T07:20:14.917 回答
0

首先,您必须JsonRequestBehavior = JsonRequestBehavior.AllowGetJsonResult.

    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>
于 2012-05-22T14:16:01.237 回答