0

我有一个 javascript 函数,可以检查 lat long 并在页面加载时运行。它使用 lat long 调用页面方法。在 page 方法中,我使用 RegisterClientScriptBlock 设置了一堆变量,并返回一个 javascript 字符串以显示使用这些变量的地图。地图加载,但我得到一个错误,它期望的变量是未定义的。

<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 + ");";
}
4

1 回答 1

0

它不会起作用,因为 PageMethod 不执行 Page 循环。我的意思是页面不会回发,脚本也不会呈现。

您可以通过返回脚本来解决此问题。

[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;
}
于 2013-03-01T14:35:19.083 回答