Registerclientscriptblock上的javascript回调

registerclientscriptblock on javascript callback

本文关键字:回调 javascript 上的 Registerclientscriptblock      更新时间:2023-09-26

我有一个javascript函数,检查长并在页面加载时运行。它调用带有lat long的page方法。在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 + ");";
}

它不会工作,因为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;
}