2013-03-01 23 views
0

我有一個JavaScript函數,它檢查經緯度並在頁面加載時運行。它調用lat long的頁面方法。在頁面方法中,我使用RegisterClientScriptBlock來設置一堆變量,並返回一串javascript以顯示使用這些變量的地圖。地圖加載,但我得到一個錯誤,它期望的變量是未定義的。javascript callback上的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函數在一個單獨的文件中? – 2013-03-01 17:53:44