2014-11-04 6 views
1

Ajax 데이터 소스 (오브젝트)에 대한 데이터 테이블 예를 따라 here을 찾으려고합니다. asp.net을 사용하고 있으며 다음 데이터를 수신하고 처리하고 응답을 제공하는 처리기가 있어야합니다.Jquery Datatables Ajax 응답

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 = "[email protected]"; 
      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 페이지에는 다음이 포함되어 있습니다.

DataTables 경고 : - 잘못된 JSON 응답 = 내 table_id 테이블 ID

$('#table_id').DataTable({ 
      "ajax": '/Handlers_New/UsersHandler.ashx', 
      "columns": [ 
       { "data": "Id" }, 
       { "data": "FullName" }, 
       { "data": "Email" }, 
       { "data": "KeyResource" } 
      ] 

     }); 

그러나 페이지가로드, 나는이 오류를 얻고있다 때. 이 오류에 대한 자세한 내용은 출력 된 데이터는 다음과 같습니다 http://datatables.net/tn/1

,

{"data" [ 
{ 
"Id": 1, 
"FullName": "Admin", 
"Email": "[email protected]", 
"KeyResource": false 
}, 
{ 
"Id": 2, 
"FullName": "Jon", 
"Email": "[email protected]", 
"KeyResource": false 
}, 
{ 
"Id": 3, 
"FullName": "Stephen", 
"Email": "[email protected]", 
"KeyResource": false 
}, etc..... 

를 참조하십시오 나는이 오류가있는 이유 알려주세요. json 객체를 다르게 조작해야합니까, 아니면 Jquery 데이터 테이블로 무언가를 놓치고 있습니까?

+0

필요한 jQuery 라이브러리 파일을 포함하고 있습니까? 테이블에 html 코드를 추가 할 수 있습니까? 또한이 [datable reference] (http://www.datatables.net/manual/tech-notes/1)를보십시오. 반환 된 Json – Chris

+0

그래, jQuery 파일이 올바른 순서로 포함되었는지 확인하십시오. 내 테이블에는 단순히 열 머리글에 대해 여러 개의 td가있는 테이블이 포함되어 있습니다. 또한 문제가없는 응답, 응답 상태가 올바른지 확인한 후 반환 된 데이터는 오류 메시지에 의해 생성 된 해당 링크를 따라 위와 같습니다. :/아직도 이걸로 붙어 ... –

답변

1

나는 jsonlint으로 인해 놀랍게도 내 문제를 해결할 수있었습니다. 나는 그것을 통해 코드를 실행했고 그것은 내 jsHeader에 ':'가 빠져 있음이 드러났습니다.

private const string JsHeader = @"{{""data"" {0}}}"; 

와 내가 지금 지금 어떤 작품이 것은 : 그래서 내가 가진 것은이었다

private const string JsHeader = @"{{""data"": {0}}}"; 

희망이 다른 유사한 문제가 발생 하나를 할 수 있습니다.