ajax中的json响应未定义

ajax中的json响应未定义,ajax,asp.net-mvc,json,Ajax,Asp.net Mvc,Json,这就是我的问题所在,我通过ajax从控制器返回一个模型列表。作为响应,我得到了一个列表,但当我试图用这个响应填充我的数据表时,它到处都是未定义的 我的看法是: function GetData() { pid = $(this).data('id'); var singleValues = $("#network").val(); var id = $(this).find(":selected").

这就是我的问题所在,我通过ajax从控制器返回一个模型列表。作为响应,我得到了一个列表,但当我试图用这个响应填充我的数据表时,它到处都是未定义的 我的看法是:

function GetData() {
                pid = $(this).data('id');
                var singleValues = $("#network").val();
                var id = $(this).find(":selected").val();
                var network = { "network": id };
                $.ajax({
                    type: 'POST',
                    url: '/Home/GetData',
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify(network),
                    success: function (response) {
                    //    console.log(response);
                        alert(response);
                            for (var i = 0; i < response.d.length; i++) {
                                $("#example").append("<tr><td>" + response.d[i].ACCOUNT_TYPE_ID + "</td><td>" + response.d[i].ACCOUNT_ISO_CODE + "</td><td>" + response.d[i].ACCOUNT_DESC + "</td></tr>");
                            debugger;
                        }
                    }

                });

更改方法以返回JSON

[HttpGet]
public JsonResult GetData(string network)
{
  List<DbDataModel> l = new List<DbDataModel>();
  .....
  return Json(l, JsonRequestBehavior.AllowGet);
}

这就是我做对的原因

function GetData() {
                pid = $(this).data('id');
                var singleValues = $("#network").val();
                var id = $(this).find(":selected").val();
                var network = { "network": id };
                $.ajax({
                    type: 'POST',
                    url: '/Home/GetData',
                    dataType:"json",
                    traditional: true,                            
                    data: jQuery.param( network ),
                    success: function (response) {
                        debugger;
                        var oTable = $('#example').dataTable();//get the DataTable
                        oTable.fnClearTable();//clear the DataTable
                            for (var i = 0; i < response.length; i++) {
                //                $("#example").append("<tr><td>" + response[i].Account_type_id + "</td><td>" + response[i].Account_iso_code + "</td><td>" + response[i].Account_desc + "</td></tr>");
                                oTable.fnAddData([
                                    response[i].Account_type_id,
                                    response[i].Account_iso_code,
                                    response[i].Account_desc
                                ]);
                            }

                    }

                });
            };

[HttpPost]
    public ActionResult GetData(string network)
    {
        List<DbDataModel> l = new List<DbDataModel>();
        DataTable db = GetDataSource(network);
        foreach (DataRow row in db.Rows)
        {
            DbDataModel model = new DbDataModel();
            model.Account_type_id = row["ACCOUNT_TYPE_ID"].ToString();
            model.Account_iso_code = row["ACCOUNT_ISO_CODE"].ToString();
            model.Account_desc = row["ACCOUNT_DESC"].ToString();
            l.Add(model);
        }
            return Json(l.ToArray(), JsonRequestBehavior.AllowGet);            
    }

做我想做的。

请澄清它在哪里显示未定义的内容,以及使用下拉菜单从数据库中获取结果的具体内容,并通过ajax将值传递给控制器。现在,返回的结果列表通过ajax发送到myView。现在我需要在datatable中显示这些结果,查询返回1行,但response.length为30,并且所有这些行在datatable中都显示为未定义删除您的contentType:'application/json;字符集=utf-8'并重试?
[HttpGet]
public JsonResult GetData(string network)
{
  List<DbDataModel> l = new List<DbDataModel>();
  .....
  return Json(l, JsonRequestBehavior.AllowGet);
}
...
$.ajax({
  type: 'GET',
  ...
function GetData() {
                pid = $(this).data('id');
                var singleValues = $("#network").val();
                var id = $(this).find(":selected").val();
                var network = { "network": id };
                $.ajax({
                    type: 'POST',
                    url: '/Home/GetData',
                    dataType:"json",
                    traditional: true,                            
                    data: jQuery.param( network ),
                    success: function (response) {
                        debugger;
                        var oTable = $('#example').dataTable();//get the DataTable
                        oTable.fnClearTable();//clear the DataTable
                            for (var i = 0; i < response.length; i++) {
                //                $("#example").append("<tr><td>" + response[i].Account_type_id + "</td><td>" + response[i].Account_iso_code + "</td><td>" + response[i].Account_desc + "</td></tr>");
                                oTable.fnAddData([
                                    response[i].Account_type_id,
                                    response[i].Account_iso_code,
                                    response[i].Account_desc
                                ]);
                            }

                    }

                });
            };

[HttpPost]
    public ActionResult GetData(string network)
    {
        List<DbDataModel> l = new List<DbDataModel>();
        DataTable db = GetDataSource(network);
        foreach (DataRow row in db.Rows)
        {
            DbDataModel model = new DbDataModel();
            model.Account_type_id = row["ACCOUNT_TYPE_ID"].ToString();
            model.Account_iso_code = row["ACCOUNT_ISO_CODE"].ToString();
            model.Account_desc = row["ACCOUNT_DESC"].ToString();
            l.Add(model);
        }
            return Json(l.ToArray(), JsonRequestBehavior.AllowGet);            
    }