2013-08-13 2 views
1

여기 새내기. Ajax에 관한 문제가 있습니다. 상황은 이렇습니다 : 여러 항목의 관리 드롭 다운 목록이 있으며 그 관리자의 관리자를 가져 와서 다른 드롭 다운 목록에 추가하려고합니다 (완료하지는 않았습니다). 나는이 JsonGridDataProvider.svc에 GetManagers에서 데이터를 반환하려면, 지금jQuery에서 Ajax가 오류 401 ("Unauthorized")을 반환했습니다.

getManagersByManagement($("#ddlManagement").val()); 

: 여기 , 내가 선택한 값을 함수를 호출을 보냅니다.

function getManagersByManagement(managementIds) { 
      $.ajax({ 
       type: "GET", 
       contentType: "application/json; charset=utf-8", 
       url: "../../JsonGridDataProvider.svc/GetManagers", 
       data: { 'Id': JSON.stringify(managementIds) }, 
       dataType: "json", 
       success: function (data) { 
        $.jStorage.set($rpt.pageIdentifier + "-Managers", JSON.stringify(data)); 
        alert($.jStorage.get($rpt.pageIdentifier + "-Managers")); 
       }, 
       error: function (jqXhr, textStatus, errorThrown) { 
        alert("fail"); 
       } 
      }); 

은 GetManagers 기능 >>

[OperationContract] 
     [WebGet(ResponseFormat = WebMessageFormat.Json)] 
     public List<User> GetManagers(long[] managementIds) 
     { 
      IList<User> allUserList = (new UserBiz()).GetAllByUserByTypeAndState(2, 3); 
      List<User> list = (from v in allUserList where v.Active == true orderby v.FullName ascending select v).ToList(); 
      var finalUserList = (from item in list 
           let sameManList = (from v in item.Management 
                where managementIds.Contains(v.Id) 
                select v.Id).Distinct().ToList() 
           where sameManList.Count > 0 
           select item).ToList(); 
      return finalUserList; 
     } 

그러나 대신 GetManagers 기능에가는, 그것은 "오류 401"("무단") 반환 할 때입니다. 어떤 아이디어가 이런 일이 일어나는 이유는 무엇입니까?


편집은 답변에 대한 여러분 모두 감사합니다. 덕분에 문제를 확인했습니다.은 javacript 기능이나 ajax 구성이 아니지만 GetManagers() 기능 (또는 일부 구성이 누락 됨)입니다. 아이디어가 있으십니까?

+0

디렉토리에 대한 사용 권한 문제 (예 : "../../JsonGridDataProvider.svc/")? 또는 해당 폴더에 대한 권한 부여가 필요한 다른 서버 구성입니까? –

+0

'data : JSON.stringify (managementIds),' – Musa

+0

시도해보십시오. 절대 URL로 테스트하십시오. 아마도 올바른 리소스를 사용하지 않았을 것입니다. – Konstantin

답변

0

호출중인 메소드에 [HttpPost] 속성을 추가하십시오. 유형을 변경하십시오 : "GET"을 입력하여 스크립트에 "POST"를 입력하십시오. 아마도 도움이 될 것입니다. 그것은 나를 위해 일했습니다.

관련 문제