无法使用json加载一堆行

时间:2018-11-23 01:49:13

标签: javascript ajax asp.net-mvc

如何在控制器中使用MVC5设置maxJsonLength。从控制器运行负载查询时出现这样的错误

  

使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了在maxJsonLength属性上设置的值。

当前,这是我的控制器中返回json的查询脚本。如果我将查询限制为1000个,则应用程序将正常运行,但是如果我删除该限制并假定这次返回1万行,则将获得超过maxJsonLength的值。

public ActionResult getFunc()
{
    List<empDetails> empList = new List<empDetails>();
    string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
    using (MySqlConnection con = new MySqlConnection(constr))
    {
        string query = "SELECT emp_id, concat(l_name,', ', f_name) as namess, emp_class, job_cat, hire_date, comp_grade, job FROM empDetails ORDER BY l_name";
        using (MySqlCommand cmd = new MySqlCommand(query))
        {
            cmd.Connection = con;
            con.Open();
            using (MySqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    try
                    {
                        empList.Add(new empDetails
                        {
                            id = sdr["emp_id"].ToString(),
                            name = sdr["namess"].ToString(),
                            empClass = sdr["emp_class"].ToString(),
                            jobCat = sdr["job_cat"].ToString(),
                            hireDate = sdr["hire_date"].ToString(),
                            compGrade = sdr["comp_grade"].ToString(),
                            job = sdr["job"].ToString(),
                        });
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("An error occurred: '{0}'", e);
                    }
                }
            }
            con.Close();
        }
    }            
    return Json(empList, JsonRequestBehavior.AllowGet);
}

这是我的ajax来调用我的控制器:

 $.ajax({
    url: '/Home/getFunc',
    type: 'GET',
    dataType: 'json',
    success: function (data) {
        console.log(data)
        var row = '';
        $('.sortable tbody').html("");
        $.each(data, function (i, item) {
            row += '<tr style="font-size:11px"><td>' + item.id
                + '</td><td>' + item.name
                + '</td><td>' + item.empClass
                + '</td><td>' + item.jobCat
                + '</td><td>' + item.hireDate
                + '</td><td>' + item.compGrade
                + '</td><td>' + item.job
                + '</td></tr>';

        });
        $('.sortable tbody').html(row); // override previous results              
    },
    //error: function (jqXhr, textStatus, errorThrown) {
    //    location.reload();
    //}
});

已经尝试将其添加到我的web.config配置中,但仍然无法正常工作,并且具有相同的结果:

system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="50000000"/>        
      </webServices>
    </scripting>
  </system.web.extensions>

任何建议或评论。 TIA

0 个答案:

没有答案