본문으로 바로가기

Javascript Ajax Json 타입 주고 받는 WCF 구성 하기

category .NET/ASP.NET 2014.09.04 11:28

구글링을 해봐도 잘 되는게 없어서 삽질끝에 방법을 찾아 공유하고자 합니다.

소스를 보는게 이해가 빠르니..소스로~ 옵션이나 설정은 구글링 해보면 다 나오니 패스 하겠습니다.

web.config 에서


    
    
      
        
      
    
    
      
        
      
    
    
      
        
          
        
      
      
        
          
          
        
      
    
  

CommonWCF.svc 에서

namespace Search.Service
{
    // 참고: "리팩터링" 메뉴에서 "이름 바꾸기" 명령을 사용하여 코드, svc 및 config 파일에서 클래스 이름 "Service1"을 변경할 수 있습니다.
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class CommonWCF : ICommonWCF
    {
        public string getData(string sSystemName, string sCollID, string sQuery, string g_sUseKMA, string g_sIsCase, string sStartPage, string sPerPageCount, string g_sSortType, string g_sSortOrder, string g_sDetailFlag, string emailAlias, string ExQuery)
        {
        }
    }
}
위의 소스에서 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 옵션을 꼭 주어야 자바 스크립트 상에서 호출이 가능합니다.

ICommonWCF.cs 파일에서는

namespace Search.Service
{
    // 참고: "리팩터링" 메뉴에서 "이름 바꾸기" 명령을 사용하여 코드 및 config 파일에서 인터페이스 이름  "IService1"을 변경할 수 있습니다.
    [ServiceContract]
    public interface ICommonWCF
    {

        [OperationContract]
        void DoWork();

        [OperationContract]
        [WebInvoke(Method = "POST",  ResponseFormat = WebMessageFormat.Json)]
        string getData(string sSystemName, string sCollID, string sQuery, string g_sUseKMA, string g_sIsCase, string sStartPage, string sPerPageCount, string g_sSortType, string g_sSortOrder, string g_sDetailFlag, string emailAlias, string ExQuery);
   }
}
여기서 [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)] 이 옵션만 주고 BodyStyle = WebMessageBodyStyle.Wrapped 옵션은 주면 안됨니다.. 마지막으로 javascript 코드에서 해당 메서드를 요청하면 끝! contentType 타입은 안줘도 되고..dataType만 json으로 해서 주고 받으면 되요~
$.ajax({
        type: "POST",
        url: "/Search/Service/CommonWCF.svc/getData",  //WCF 웹 메소드 호출
        cache: false,
        data: param,  //WCF 웹 메소드에 검색 요청 파라미터 제공
        contentType: "application/json; charset=utf-8",
        dataType: "json",                       //Json 데이터 타입으로 결과 데이터 Return
        success: function (msg) {
        },
        error: function (msg) {
            //alert(msg.responseText);
        }
    });
}

댓글을 달아 주세요