나는 일하고 있어요 ASP.NET Web Forms
응용 프로그램입니다. Visual Studio 2012
표준 템플릿 사용 . DataTable 1.10
서버에 대한 Ajax 호출과 함께 사용하고 싶습니다 . 사용 datatables
하는 데 전혀 문제가 있기 때문에 처음부터 시작하여 txt 파일에서 읽는 것과 같은 간단한 예제를 사용할 때 제대로 작동하는지 확인할 수 있습니다. 그러나 이제 공식 사이트의 예제에 따라 메서드에 대한 실제 Ajax 호출을 구현하고 일부 데이터를 반환하고 싶습니다.
Test.aspx
이 코드가 있는 페이지 가 있습니다.
<script type="text/javascript">
$(document).ready(function () {
$('#example').dataTable({
"processing": true,
"serverSide": true,
"ajax": "/Table.aspx/TestAjax"
});
});
그리고 매우 간단한 HTML :
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
</tr>
</tfoot>
</table>
이 모든 것은 예제에서 가져 왔으며 단순화를 위해 열 수를 최소화했습니다.
예제에서 내 방법에 대해 다음 코드를 사용했습니다.
[WebMethod]
public static string TestAjax(string sEcho)
{
var list = new FormatedList();
list.sEcho = sEcho;
list.iTotalRecords = 1;
list.iTotalDisplayRecords = 1;
var item = new List<string>();
item.Add("Gecko");
list.aaData = new List<List<string>>();
list.aaData.Add(item);
return list.ToString();
}
FormatedList
다음과 같이 정의 된 클래스는 어디에 있습니까?
public class FormatedList
{
public FormatedList()
{
}
public string sEcho { get; set; }
public int iTotalRecords { get; set; }
public int iTotalDisplayRecords { get; set; }
public List<List<string>> aaData { get; set; }
}
따라서 콘솔에서 프로젝트를 실행할 때에 Status 200 OK
대한 호출을 볼 수 Test.aspx/TestAjax
있지만 유효하지 않은 경우 브라우저에서 오류가 발생합니다 Json
. 서버 측 코드의 예에서 메서드의 반환 유형은 실제 클래스 FormatedList
였지만 동일한 결과를 제공했습니다. 두 경우 모두 Json
브라우저가 오류를 유발하는 실제 값 을 반환하지 않지만 사람들이 이와 같은 접근 방식을 사용하고 있으며 작동하는 것처럼 들리는 예를 볼 수 있습니다.
그렇다면 코드에서 내 오류는 어디에 있으며 (C # 사용) 서버에서 데이터를 반환하는 적절한 방법은 무엇 DataTable
입니까?
당신은 단지 list.ToString()
. 일반적으로 유형 이름이 생성됩니다.
대신 JSON으로 직렬화하는 것이 가장 좋습니다. 제 경험상 ASMX / [WebMethod]는 잘 처리하지 못합니다. 직렬화하려면 라이브러리를 사용해야합니다 . 일반적인 권장 사항은 Json.NET 입니다. 해당 라이브러리가 있고 적절한 using 문 using Newtonsoft.Json;
을 클래스 맨 위에 추가하면 함수를 다음과 같이 변경해보십시오.
[WebMethod]
public static void TestAjax(string sEcho)
{
var list = new FormatedList();
list.sEcho = sEcho;
list.iTotalRecords = 1;
list.iTotalDisplayRecords = 1;
var item = new List<string>();
item.Add("Gecko");
list.aaData = new List<List<string>>();
list.aaData.Add(item);
string json=JsonConvert.SerializeObject(list);
Response.ContentType= "application/json";
Response.Write(json);
}
응답에 직접 쓸 것이기 때문에 void를 반환합니다.
그런데 웹 API 에 대해 생각해 보셨습니까 ? ASMX / [WebMethod]보다 다운하는 것이 더 나은 경로입니다. 웹 API 함수를 return list;
사용하면 요청 된 콘텐츠 유형에 따라 목록을 JSON (Json.NET! 사용) 또는 XML로 변환 할 수 있으며 프레임 워크가 처리합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다