下面的代码有啥问题?
Posted
技术标签:
【中文标题】下面的代码有啥问题?【英文标题】:what is wrong with the below code?下面的代码有什么问题? 【发布时间】:2016-05-07 17:40:42 【问题描述】:string str = "<script type='text/javascript'>" +
"var lat=lon=-1;" +
"getLocation();" +
"function getLocation() " +
"if (navigator.geolocation) " +
"navigator.geolocation.getCurrentPosition(showPosition);" +
"" +
"" +
"function showPosition(position) " +
"lat=position.coords.latitude;" +
"lon=position.coords.longitude;" +
"document.getElementById('<%=ltrLat.ClientID%>').innerhtml=lat;"+
"document.getElementById('<%=ltrLon.ClientID%>').innerHTML= lon;"+
"var x= document.getElementById('<%=ltrLat.ClientID%>').innerHTML;"+
"var y= document.getElementById('<%=ltrLon.ClientID%>').innerHTML;" +
"alert('lat='+x+'lon='+ y);" +
"" +
"</script>";
ClientScriptManager cs = this.ClientScript;
cs.RegisterStartupScript(this.GetType(),"xyz", str);
ltrLat 和 ltrLon 是客户端的 asp 标签。 而且标签不显示 我没有收到警报。
【问题讨论】:
从不使用字符串 s 注意:<%= ... %>
仅作为渲染过程的一部分在 .aspx
文件中被识别。它不会在字符串文字或.cs
文件中被替换。
【参考方案1】:
我也尝试过类似的方法,但我得到的是 .net 字符串不允许你编写脚本,所以我建议你将脚本嵌入 .aspx 并在 .cs 中定义全局变量,然后在脚本中使用这些变量作为
<script>
var x= <%= globalXInCS %>
</script>
【讨论】:
我在这里要做的主要事情是使用注册启动脚本从服务器端运行脚本,然后在服务器上读取脚本中的坐标。 你想获取服务器或客户端的位置吗? 我想使用我在上述脚本中使用的地理定位 api 获取客户端设备位置。我按照你的方式将脚本嵌入 .aspx 并从服务器调用 getLocation 函数。这是工作。纬度和经度是坐标。但我无法在服务器端读取这些值。 您想要服务器端的纬度或经度吗?比你有两种方法通过 jquery 临时将纬度和经度存储在一些文本框中,当事情得到确认时,获取文本框的值..【参考方案2】:如果您想使用 Ajax,请在 .aspx 中添加以下代码 请记住,您必须创建一个 web 方法来处理 .cs 文件中的 ajax 请求 .aspx
google.maps.event.addListener(marker, 'dragend', function (evt)
var lati = evt.latLng.lat();
var longi = evt.latLng.lng();
var data1 = JSON.stringify( latitude: lati, longitude: longi, locationId: this.id );
Updatelocations(data1);
);
function Updatelocations(data1)
$.ajax(
type: "POST",
url: window.location.pathname + '/UpdateLoc',
data: data1,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function ()
alert("Location Updated..!");
,
error: function (xhr, status, error)
alert(xhr.status);
alert(xhr.responseText);
alert(data1);
);
</script>
.cs
[WebMethod]
public static void UpdateLoc(double latitude, double longitude, long locationId)
double lti = Convert.ToDouble(latitude);
double lngi = Convert.ToDouble(longitude);
long locationid= Convert.ToInt64(locationId);
DACLocation.UpdateLocation(lti, lngi, locationId);
希望你能好好理解
【讨论】:
以上是关于下面的代码有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章
spark中的lit()有啥用?下面的两段代码返回相同的输出,使用 lit() 有啥好处 [重复]