2013-03-01 2 views
0

위도가 긴지 확인하고 페이지로드에서 실행되는 javascript 함수가 있습니다. 위도가 긴 페이지 메서드를 호출합니다. 페이지 메서드에서 RegisterClientScriptBlock을 사용하여 변수 묶음을 설정하고 해당 변수를 사용하는지도를 표시하는 자바 스크립트 문자열을 반환합니다. 지도가로드되지만 예상되는 변수가 정의되지 않았다는 오류가 발생합니다.javascript 콜백에 registerclientscriptblock

<script type="text/javascript">  
    function check() {   
     if (navigator.geolocation) { 
      var panelProg = $get('progress'); 
      panelProg.style.display = ''; 
      var panelProg = $get('map'); 
      panelProg.style.display = 'none';    
      navigator.geolocation.getCurrentPosition(function (position) {     
       // Access them accordingly 
       PageMethods.SetSession(position.coords.latitude, position.coords.longitude, callBack); 
      }); 
     } 
    } 
    function callBack(result) {   
eval(result); 
    } 
</script> 

[WebMethod] 
public static string SetSession(string latval, string longval) 
{ 
    //does work, calls RegisterClientScriptBlock to set a bunch of array variables 
    //var lats = new Array(); var longs = new Array(); etc... 
    return "displaymap(" + latval + "," + longval + ");"; 
} 

답변

0

PageMethod가 페이지주기를 수행하지 않기 때문에 효과가 없을 것입니다. 페이지가 다시 게시되지 않고 스크립트가 렌더링되지 않는다는 의미입니다.

스크립트를 반환하여이 문제를 해결할 수 있습니다.

[WebMethod] 
public static string SetSession(string latval, string longval) 
{ 
    var js = "lats = new Array(); var longs = new Array();"; //etc... 
    js += "displaymap(" + latval + "," + longval + ");"; 
    return js; 
} 
+0

감사합니다.하지만 변수는 아직 정의되지 않았습니다. 이것은 displaymap 함수가 별도의 파일에 있기 때문에 발생합니까? –