Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC5通过jQueryAjax返回通用对象列表_C#_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

C# MVC5通过jQueryAjax返回通用对象列表

C# MVC5通过jQueryAjax返回通用对象列表,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我试图通过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.

我试图通过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);
}
      $.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');
        }
    });
在我看来,代码是这样的

 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);
                 }
成功:函数(数据){
var结果=数据d;
对于(变量i=0;i
那里也没有成功。我做错了什么

提前感谢…

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

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

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

  • 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);
          }
    }
    
    因此,您可以这样编写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);
    }
    
          $.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');
            }
        });
    
    1. 您正在从服务器返回JSON。 您必须在Ajax请求中将
    dataType
    设置为
    json

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

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

  • 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);
          }
    }
    
    因此,您可以这样编写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);
    }
    
          $.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');
            }
        });
    


    看起来您正在一个名为list的命名属性中返回JSON。您从
    警报(data.list);
    中得到了什么?我成功添加了以下代码:函数(data){var result=data.list;警报(data.list);警报(result.length);警报为“未定义”第二个警报给出错误“无法获取未定义或空引用的属性”长度当您在浏览器中收到json时,您是否可以分析响应,如果它是hsa某物,如果是空的,您也应该开始查看为什么不正确返回视图感谢控制台和响应上的提示。解决了我的问题问题看起来您在名为list的命名属性中返回JSON。您从
    警报(data.list);
    中得到了什么?我成功添加了以下代码:函数(data){var result=data.list;警报(data.list);警报(result.length);警报为“未定义”第二个警报给出错误“无法获取未定义或空引用的属性”长度当您在浏览器中收到json时,您是否可以分析响应,如果它是hsa某物,如果是空的,您也应该开始查看为什么不正确返回视图感谢控制台和响应上的提示。解决了我的问题问题我根据你的建议进行了更改。顺便说一句,谢谢你的链接,非常有用。我得到的错误是SyntaxError:JSON.parse:JSON数据第1行第1列的意外字符。我正在研究这个问题,但是如果你有建议,请随时分享…你从服务器得到了什么响应?你知道吗成功函数中的le.log(result)这样你就不必做这个
    data:JSON.stringify({listname:listname})
    。你只需做
    data:{listname:listname}
    就可以了,我已经说过我认为你不需要这个
    contentType:“application/JSON;charset=utf-8”
    ,因为
    listname
    是一个
    GET
    parameter@AivanMonceller你在这两方面都是正确的。非常感谢。我根据你的建议进行了更改。顺便说一句,谢谢你的链接,非常有用。我得到的错误是SyntaxError:JSON.parse:我正在查找的JSON数据的第1行第1列的意外字符但是如果你有什么建议,请随意分享…你从服务器得到了什么响应?在成功函数中执行console.log(result)这样你就不必执行
    data:JSON.stringify({listname:listname})
    。你只需执行
    data:{listname:listname}即可
    我已经说过,我认为您不需要这个
    内容类型:“application/json;charset=utf-8”
    ,因为
    listname
    是一个
    GET
    parameter@AivanMonceller在这两方面你都是对的。非常感谢。