2014-11-18 2 views
0

자바 스크립트 변수를 서버 측에 전달할 수없는 것처럼 문제가 발생합니다.이 시나리오에서는 달성 할 수 없다는 것을 알고 있으므로 ASP에 값을 설정하려고했습니다. 숨겨진 필드를 사용하여 jQuery 및 서버 쪽 레이블 값을 가져 오는 있지만 불행히도 숨겨진 필드에 대한 빈 값이 점점. 이자바 스크립트 변수를 서버 쪽 메서드에 전달하는 방법

CODE에게

$(document).ready(function(){ 
    var DataID = "4325"; 
    testDataVal(DataID); 
}); 

function testDataVal(DataID){ 

<%=RenderMethod(DataID) %> // How to pass javascript variable to server side 

} 

숨겨진 필드 접근 해결하는 방법에 도와주세요 : 모든

$(document).ready(function(){ 
    var DataID = "4325"; 
    testDataVal(DataID); 
}); 

function testDataVal(DataID){ 
    $("#<%=hdnDataVal.ClientID %>").val(DataID); 

    alert($("#<%=hdnDataVal.ClientID %>").val(DataID)); // Here using javascript I can able to set the value and when I alert the value it is displayed 

    <%=RenderMethod(hdnDataVal.Value) %> // here the hiddenfield value is empty 

} 

    <asp:HiddenField runat="server" ID="hdnDataVal" /> 
+3

변수를 양식에 넣고 제출하거나 AJAX 요청을 사용해야합니다. 하나는 클라이언트 측이고 다른 하나는 서버 측이므로 JS 변수를 C# 코드에 적용 할 수 없습니다. –

+0

@RoryMcCrossan하지만 hiddenfield를 사용하면 작동하지 않습니다. – Vignesh

+0

어디에서'DataID' 값을 설정하고 있습니까? –

답변

1

먼저 ... 당신은 서버 코드를 혼합하지 말아야 클라이언트 코드 당신이 그것을하고있는 방식.

코드를 디자인하는 것이 좋지 않습니다. 항상 클라이언트와 서버 코드를 분리하십시오. 서로 다른 순간, 장소 및 상황에서 실행됩니다 ... 함께 사용하면 오류를 디버그하기가 어려워집니다.

내가 겪고있는 문제는이 코딩 방법 때문이라고 생각합니다. 당신은 당신의 코드에 대해 말하기

은 화재로 할 때 전체, 아직 발사되지 않음)

<%=RenderMethod(hdnDataVal.Value) %> // here the hiddenfield value is empty 

이 페이지가 로딩 될 때와 서버 코드는 $ (문서) .ready 내부의 코드를 (실행 니펫 페이지 로딩로드. 그래서 RenderMethod가 전에 넣고 변수에 값을 넣습니다.

1

$ .ajax();를 사용해보세요. 서버 측에

var url = 'my-url.aspx'; 
$.ajax({ 
    url: url, 
    type: 'POST', 
    data: {'variable_name': my_variable }, 
    success: function(html) 
    { 
     alert('ok'); 
    }, 

}); 

및 수신기는 :

string my_variable = Request.Form['variable_name']; 
1

당신은 클라이언트 측에서 서버 측 호출을 만들기 위해 Page Method를 사용할 수 있습니다. 그것은 적절하게 당신이 원하는 것을 성취 할 수있는 가장 쉬운 방법입니다.

당신이 당신의 aspx 페이지에 스크립트 관리자를 포함 할 필요가 모든

먼저 활성화 Page Methods :

<asp:ScriptManager ID="scrmgr" EnablePageMethods="true" runat="server" /> 

지금 당신은 같은 s 번째로, 서버 측 메서드를 호출하고 그것에게 당신이 원하는 클라이언트 측 데이터를 전달할 수 있습니다 이 :

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var DataID = "4325"; 
     testDataVal(DataID); 
    }); 

    function testDataVal(DataID) { 
     PageMethods.RenderMethod(DataID, OnSuccess, OnError); 
    } 

    function OnSuccess(result) { 
     alert(result); 
    } 

    function OnError() { 
     alert('Some error has ocurred!'); 
    } 
    </script> 

OnSuccess 함수는 서버 측 방법이 성공적으로 호출 된 경우에 호출된다. 그렇지 않으면 OnError 함수가 호출됩니다. 당신이 RenderMethod 내부에 브레이크 포인트를 배치하면

[System.Web.Services.WebMethod] 
public static string RenderMethod(string dataID) 
{ 
    return "Got here!"; 
} 

, 그때 당신이 클라이언트 측 데이터를 확인할 수 있습니다 ("4325"를 즉, 값) :

이것은 Page Method가 .aspx.cs 파일 내에 선언되는 방법입니다 올바르게 전달됩니다.

관련 문제