ASP.NET MVC_jquery의 EasyUI의 DataGrid 도메인 간 호출 구현 코드

WBOY
풀어 주다: 2016-05-16 17:55:20
원래의
1105명이 탐색했습니다.

최근 프로젝트에서는 도메인을 넘어 다른 프로젝트의 데이터를 호출해야 하는데, 다른 프로젝트에서도 EasyUI의 DataGrid 컴포넌트를 사용합니다. 처음에는 DataGrid의 url 속성을 다른 프로젝트의 URL 주소로 직접 정의하면 충분할 것이라고 생각했습니다. 테스트 후 실제로 json 데이터가 반환되는 것을 확인했습니다. 그러나 json 데이터에서 "잘못된 레이블" 오류가 발생했습니다. 오류에 대한 해결 방법을 온라인에서 검색하여 "Json Invalid Label Error Solution" 방법을 참조했습니다. json을 로드하고 변환하는 datagrid의 loadData 메서드는 여전히 위의 오류를 표시합니다. 형식 문제가 없습니다.

"JavaScript 크로스 도메인 액세스 문제 해결"이라는 기사를 검색해 보니 easyUI는 JQuery의 비동기 방식을 사용하여 데이터를 로드하고 JQuery의 크로스 도메인 액세스 규칙, 즉 jsoncallback을 따라야 하기 때문이라는 것을 알게 되었습니다. = 위 기사에 언급된 URL에 추가해야 합니까? 콜백 함수 매개변수와 반환되는 json의 형식을 다음과 같이 수정해야 합니다. 콜백 함수 이름(json 데이터), 이제 반환되는 데이터는 콜백 함수 이름이 없는 json 형식의 데이터만 되어 자연스럽게 형식 오류가 발생하므로 ASP.NET MVC auto 정의된 JsonResult 클래스를 수정했습니다. 사용자 정의 JsonResult 클래스를 작성하는 방법에 대한 자세한 내용은 ASP.NET MVC JsonResult 직렬화 결과 사용자 정의,

코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

public class CustomJsonResult:JsonResult
{
공개 재정의 void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");

HttpResponseBase 응답 = context.HttpContext.Response;

if ( !String.IsNullOrEmpty(ContentType))
{
response.ContentType = ContentType;
}
else
{
response.ContentType = "application/json";
}
if (ContentEncoding != null)
{
response.ContentEncoding = ContentEncoding;
}
if (Data != null)
{
#pragma warning 비활성화 0618
//도메인 간 호출은 json 형식 jsoncallback을 수정해야 합니다.
if (context.HttpContext.Request.Params.AllKeys.Contains("jsoncallback") ))
{
String callback = context.HttpContext.Request.Params["jsoncallback"]
response.Write(callback "(" JsonConvert.SerializeObject(Data) ")"); }
else
{
response.Write(JsonConvert.SerializeObject(Data))
}
#pragma warning Restore 0618
}
}
}


EasyUI의 데이터그리드 코드는 다음과 같습니다.


//datagrid
$('#dg').datagrid( {
url:'http://localhost:9000/ManagementSystem/ListCurrent?department=sss&jsoncallback=?',
pageNumber: 1,
pageSize: 20,
pageList: [20, 40, 60, 80, 100],
onDblClickRow: function(rowIndex) {
edit(); }
});


저자: mikel
출처: http://www.cnblogs.com/micel/
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿