2013-03-26 2 views
3

정의 된 페이지 메소드에 객체를 전달하려고합니다. 세 개의 텍스트 상자에서 수집 한 데이터를 전달하려고합니다.jquery ajax를 통해 WebMethod에 객체 전달

페이지 방법

[System.Web.Services.WebMethod] 
    public static string saveDataToServer(object csObj) 
    { 
     // Function Body. 
    } 

자바/jQuery를

 $("#osmSendMsg").click(function() { 
      debugger; 
      var cntDetails = { 
       cntName : $("#osmContactName").val(), 
       cntEmail : $("#osmContactEmail").val(), 
       cntMsg : $("#osmContactMessage").val() 
      } 
      PostDataToServer(cntDetails,"Please wait...","/ContactUs.aspx/saveDataToServer","csObj"); 
     }); 

PostDataToServer

// Post data to server (ajax call). 
function PostDataToServer(dataToSend, strMessagetoShow, strMethodToCall, jsonObjectName) { 
    debugger; 
    /* 
    dataToSend   Contains the JSON Object. 
    submitType   1 == Normal Submit; 2 == Submit and Print. 
    strMessagetoShow Text that is displayed in the Please Wait Window. 
    */ 
    var tempurl = strMethodToCall; 
    var tempdata; 
    $.ajax({ 
     url: tempurl, 
     type: "POST", 
     async: false, 
     dataType: "json", 
     data: "{" + jsonObjectName + ":" + JSON.stringify(dataToSend) + "}", 
     //timeout: 30000, 
     contentType: "application/json; charset=utf-8", 
     success: function (data) { 
      tempdata = data; 
     }, 
     error: function (result) {    
      tempdata = null; 
     } 
    }); //end of the ajax call 
    return tempdata; 
} //End of the post Data 

N 호출이 웹 메소드에 도달했습니다. 문제 없어. 나는 물건도 가지고있다. 그러나 물건을 어떻게 처리해야합니까?

Data inside the object

당신이 볼 수 있듯이, 그게 내가 갖는거야. 또한 클래스를 선언하고 매개 변수로 전달하려고 시도했지만 모든 속성이 비어 있습니다. 데이터가 키로 나타나면 값 쌍을 표시합니다. 사전으로 변환 할 수는 있지만 복잡한 해결책이라고 생각합니다.

Key - Value Pair

간단한 해결책

환영 할 것입니다!

+1

은 참조 http://stackoverflow.com/questions/13175652/json- 포스트 백 - C - 샤프 - 웹 메쏘 드 - 리터럴 - 컨트롤 추가 – Alex

+0

좋습니다. 문자열로 보내고 서버 측에서 분할합니다. –

답변

7

올바른 방법을 찾으려면 check this answer을 확인하십시오. check this도 가능합니다. 당신이 당신의 WebMethod에 도달 할 수 있습니다으로 다음과 같이

0

얼마나 많은 데이터가 웹 메소드로 돌아갈 지에 따라 다릅니다. 나는 객체를 생성하고 그것을 인스턴스화하고 속성으로 채울 것이다. 여러 객체가 들어오는 경우 각각의 객체를 객체 목록으로 만들 수 있습니다.

0

결과 수집이 성공 방법의 '데이터'매개 변수에 반환됩니다. 이 매개 변수는 data [0] .cntName과 같이 직접 처리 할 수 ​​있습니다.

+0

아니요, 클라이언트 쪽이 아니라 서버 쪽에서 데이터를 가져 오려고합니다. 현재 'object' 유형으로 나오고 있지만, 그 객체를 처리 할 수 ​​없습니다. –

0

, 당신은 객체에서 데이터를 읽고 당신의 WebMethod를 수정해야합니다

[System.Web.Services.WebMethod] 
    public static string saveDataToServer(Dictionary<string, string> csObj) 
    { 
      try 
      { 
       string Name = csObj["cntName"].ToString(); 
       string Email = csObj["cntEmail"].ToString(); 
       //you can read values like this and can do your operation 
       return "";//return your value 
      } 
      catch(Exception ex) 
      { 
        throw new Exception(Ex.Message); 
      } 
    } 
관련 문제