ここにあるAjaxデータソース(オブジェクト)のデータテーブルの例に従おうとしています。私はasp.netを使用しており、データを受信して処理し、応答を提供する次のハンドラーを持っています。
public class UsersHandler : IHttpHandler
{
private const string JsHeader = @"{{""data"" {0}}}";
public void ProcessRequest(HttpContext context)
{
IEnumerable<SystemUser> data = SystemUserLogic.LoadAllSystemUsers();
List<SimpleUser> userlist = new List<SimpleUser>();
foreach (SystemUser su in data)
{
SimpleUser simple = new SimpleUser();
simple.Id = su.Id;
simple.FullName = su.NameFirst;
simple.Email = "example@email.co.uk";
userlist.Add(simple);
}
string json = JsonConvert.SerializeObject(userlist, Formatting.Indented);
context.Response.ContentType = "text/plain";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Cache.SetNoStore();
context.Response.Expires = -1;
context.Response.Write(String.Format(JsHeader, json));
}
ブラウザでそれをキャッチし、ネットワークトラフィックを介してデータを見ると、正しい応答が返されます。私のaspxページには以下が含まれています。
$('#table_id').DataTable({
"ajax": '/Handlers_New/UsersHandler.ashx',
"columns": [
{ "data": "Id" },
{ "data": "FullName" },
{ "data": "Email" },
{ "data": "KeyResource" }
]
});
ただし、ページが読み込まれると、次のエラーが発生します。
DataTables 警告: テーブル id=table_id - 無効な JSON 応答。このエラーの詳細については、http://datatables.net/tn/1を参照してください。
出力されたデータは次のようになります。
{"data" [
{
"Id": 1,
"FullName": "Admin",
"Email": "example@email.co.uk",
"KeyResource": false
},
{
"Id": 2,
"FullName": "Jon",
"Email": "example@email.co.uk",
"KeyResource": false
},
{
"Id": 3,
"FullName": "Stephen",
"Email": "example@email.co.uk",
"KeyResource": false
}, etc.....
このエラーが発生する理由を教えてください。json オブジェクトを別の方法で操作する必要がありますか、それとも Jquery データテーブルで何か不足していますか?