MVC5通过Jquery Ajax返回对象的通用列表

我试图通过jQuery Ajax检索对象列表

我有一个像这样的控制器方法:

[HttpGet]
public JsonResult GetAllStates(string listname = "")
{
     clsDdl ddl = new clsDdl();
     List<clsDdl> retval = new List<clsDdl>();
     ddl.id = "1";
     ddl.value = "Dropdown1";
     ddl.status = "DDL Status";
     ddl.attributes = "First Dropdown Text";
     retval.Add(ddl);

     //return retval;
     return Json(new
     {
         list = retval
     }, JsonRequestBehavior.AllowGet);
}

下面是我试图返回的Dropdown类

public class clsDdl
{
    public string id { get; set; }
    public string value { get; set; }
    public string status { get; set; }
    public string attributes { get; set; }
}

我认为代码看起来像这样

 function LoadListItems (options) {

 var listname = options.listname;

$.ajax({
         type: "GET",
         url: url,
         data: JSON.stringify({
             listname: listname
         }),
         contentType: "application/json; charset=utf-8",
         async: true,
         success: function (result) {
            alert(result[0].value);
         },
         error: function (xhr, status, err) {
           alert(err.toString(), 'Error - LoadListItemsHelper');
         }
       });

我的控制器行动正在受到打击。 但警报总是“未定义”。 我也试过了

 success: function (data) {
                 var result = data.d;
                 for (var i = 0; i < result.length; i++) {
                 alert(result[i].attributes);
                 }

在那里也没有成功。 我究竟做错了什么 ?

提前致谢...


1.您从服务器返回JSON。 您必须将Ajax请求中的dataType设置为json

  • contentType - >将数据发送到服务器

  • dataType - >从服务器返回的数据

  • AJAX请求中的内容类型和数据类型是什么?

          $.ajax({
            type: "GET",
            url: url,
            data: JSON.stringify({  listname: listname }),
            contentType: "application/json; charset=utf-8",
    
    //HERE
            dataType: 'json',
            success: function (result) {
                  alert(result[0].value);
            },
            error: function (xhr, status, err) {
                   alert(err.toString(), 'Error - LoadListItemsHelper');
            }
        });
    

    2。

    你回来了

    return new Json(new {list = retval}, JsonRequestBehavior.AllowGet);
    

    success: function(result)

    你可以像这样访问列表: result.list[index]

    success: function (result) {
    
          for(var i =0; i < result.list.length; i++){
    
             alert(result.list[i].value);
             alert(result.list[i].status);
          }
    }
    

    编辑基于艾凡蒙塞勒的评论,你可以做到这一点:

    当你发送GET你不需要

    contentType: "application/json; charset=utf-8",
    

    所以你可以这样写你的Ajax:

          $.ajax({
            type: "GET",
            url: url,
            data: {  listname: listname },
    
    //HERE
            dataType: 'json',
            success: function (result) {
                  alert(result[0].value);
            },
            error: function (xhr, status, err) {
                   alert(err.toString(), 'Error - LoadListItemsHelper');
            }
        });
    
    链接地址: http://www.djcxy.com/p/46141.html

    上一篇: MVC5 Returning a Generic List of Objects via Jquery Ajax

    下一篇: How to further improve error messages in Scala parser