Load ASP.Net MVC JSONResult jQuery DataTables Load ASP.Net MVC JSONResult jQuery DataTables json json

Load ASP.Net MVC JSONResult jQuery DataTables


The following works great for me:

$(function () {    $('#example').dataTable({        bProcessing: true,        sAjaxSource: '@Url.Action("LoadPhoneNumbers", "Home")'    });});

I have removed the sAjaxDataProp property.

with this data source:

public ActionResult LoadPhoneNumbers(){    return Json(new    {        aaData = new[]         {            new [] { "Trident", "Internet Explorer 4.0", "Win 95+", "4", "X" },            new [] { "Gecko", "Firefox 1.5", "Win 98+ / OSX.2+", "1.8", "A" },            new [] { "Webkit", "iPod Touch / iPhone", "iPod", "420.1", "A" }        }    }, JsonRequestBehavior.AllowGet);}

and for your example with phones simply:

public ActionResult LoadPhoneNumbers(){    var phoneNumbers = new List<PhoneNumber>(new[]     {        new PhoneNumber { Number = "555 123 4567", Description = "George" },        new PhoneNumber { Number = "555 765 4321", Description = "Kevin" },        new PhoneNumber { Number = "555 555 4781", Description = "Sam" }    });    return Json(new    {        aaData = phoneNumbers.Select(x => new[] { x.Number, x.Description })    }, JsonRequestBehavior.AllowGet);}


In this example it appears that the data returned from the controller method needs to be in a specific format. He's actually returning the list as part of aaData. It also explains what each parameter is for. Perhaps you're just not formatting the return in a json format that DataTables understands.

public class HomeController : Controller{    public ActionResult AjaxHandler(jQueryDataTableParamModel param)    {        return Json(new{                sEcho = param.sEcho,                iTotalRecords = 97,                iTotalDisplayRecords = 3,                aaData = new List<string[]>() {                    new string[] {"1", "a1", "a2", "a3"},                    new string[] {"2", "b1", "b2", "b3"},                    new string[] {"3", "c1", "c2", "c3"}                    }            },        JsonRequestBehavior.AllowGet);    }}