json在ajax中的响应未定义

时间:2014-08-15 10:47:11

标签: ajax asp.net-mvc json

所以这是我的问题,我通过ajax从控制器返回我的模型List列表。作为回应我得到List但是当我尝试用这个响应填充我的数据表时它显示未定义到处 我的观点:

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;
                        }
                    }

                });

MY Controller:

[HttpPost]
    public DbDataModel[] 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 l.ToArray();

    }

我的模特:

 public class DbDataModel
{
    public string Account_type_id { get; set; }
    public string Account_iso_code { get; set; }
    public string Account_desc { get; set; }
}

2 个答案:

答案 0 :(得分:0)

更改您的方法以返回JSON

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

并在脚本中

...
$.ajax({
  type: 'GET',
  ...

答案 1 :(得分:0)

这就是我做对了。

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);            
    }

完全按照自己的意愿行事。