2012-02-08 10 views
1

데이터베이스에서 데이터를 저장하기 위해 서버에서 클라이언트 측으로 전달해야하는 JSON 개체가 있습니다.JSON을 웹 메소드에 전달하는 중 오류가 발생했습니다.

나는 성공적으로 사용하여 전달할 수 있습니다

var str2 = JSON.stringify({ 
    o: oJSON 
}); 

$.ajax({ 
    type: "POST", 
    url: "WebForm1.aspx/Test", 
    data: str2, 
    processData: false, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) {}, 
    error: function (e) { 
     alert(e); 
    } 
}); 

<System.Web.Services.WebMethodAttribute(),    
System.Web.Script.Services.ScriptMethodAttribute()> _ 
Public Shared Function Test(ByVal o As RootObject) As String 
    Dim strName as string = textboxName.text 
End Function 

나는 떨어져 서로 다른 2 개의 데이터를 저장해야합니다. json 객체를 저장하기 전에 첫 번째 세트를 저장해야합니다. 텍스트 상자 값을 데이터베이스에 저장하는 중입니다. 두 번째 세트는 json을 데이터베이스에 저장하는 것입니다.

나는 텍스트 상자의 값을 동일하게 sName을 설정하려고 다음과 같은 오류가 점점 오전 :

Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class

내가 텍스트 상자를 액세스 할 수있는 클라이언트 측에 JSON 개체를 전달하는 또 다른 방법이 있나요을 페이지의 값?
NameJSON 개체에 필요한 다른 값을 포함시켜야합니까?

+0

"서버 -> 페이지 -> 데이터베이스"라고 말했습니까? 그건 당연하지, "페이지 -> 서버 -> 데이터베이스"로 가고 싶지 않아? JSON을 사용하여 Ajax를 통해이 작업을 수행하려는 경우 2 개의 값 (예 : beforeValue 및 afterValue)을 사용하는 메소드가 필요합니다. 이전/이후 값을 동시에 보내려고하기 때문에 변경되지 않은 이전 값 (예 : 숨겨진 필드, JS 변수 등)을 저장해야합니다. – Zachary

답변

3

아니요, you won't be able to access your Page's TextBox controls from the static/Shared method. AJAX 호출은 TextBox를 인스턴스화하고 그 값을 결정하기 위해 전체 ViewState를 다시 전달하고 라이프 사이클을 통해 페이지를 실행해야 할 필요가있었습니다. 이 시점에서 기본적으로 UpdatePanel을 가지게되며 페이지 메서드를 사용하면 성능상의 이점을 잃게됩니다.

관련 문제