0

緯度経度をチェックし、ページの読み込み時に実行する JavaScript 関数があります。緯度経度で 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 + ");";
}
4

1 に答える 1

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;
}
于 2013-03-01T14:35:19.083 に答える