在页面呈现之前运行Javascript和控制器操作
我有一个简单的rails应用程序,可以在用户到达站点时对其进行地理定位(此代码位于my application.html.erb文件的head标记中):在页面呈现之前运行Javascript和控制器操作,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一个简单的rails应用程序,可以在用户到达站点时对其进行地理定位(此代码位于my application.html.erb文件的head标记中): var x=document.getElementById(“演示”); 函数getLocation() { if(导航器.地理位置) { navigator.geolocation.getCurrentPosition(showPosition); } else{x.innerHTML=“此浏览器不支持地理位置。”;} } 功能显示位置(位
var x=document.getElementById(“演示”);
函数getLocation()
{
if(导航器.地理位置)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML=“此浏览器不支持地理位置。”;}
}
功能显示位置(位置)
{
var lat=位置坐标纬度;
var log=position.coords.longitude;
document.cookie=“cl=“+lat+”&“+log+”;”;
}
getLocation()
坐标保存为cookies。基于这些坐标,它们用于从控制器中的数据库检索特定的数据集。然后,这些结果将显示在视图中
当前,当用户第一次到达站点时,页面为空白,当页面刷新时,位置信息通过控制器,并显示相应的数据
我试图做的是在初始页面加载时完成地理位置和控制器操作,以便在用户第一次到达站点时显示数据。或者更简单地说:
我认为我的问题的根源在于javascript和控制器事件的顺序,但我不确定如何解决这个问题 由于javascript在浏览器中运行,页面在服务器端呈现,因此您需要重新加载整个页面,或者在
showPosition
中进行一些ajax更新。否则,坐标将始终落后一步:如果移动到另一个位置,cookie中的坐标将来自最后一个位置,不是当前页面。由于javascript在浏览器中运行,页面在服务器端呈现,因此您需要重新加载整个页面或在showPosition
中执行一些ajax更新。否则,坐标将始终落后一步:如果移动到另一个位置,cookie中的坐标将来自最后一个位置,而不是当前位置
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
var lat = position.coords.latitude;
var log = position.coords.longitude;
document.cookie = "cl=" + lat + "&" + log + ";";
}
getLocation()
</script>
<p id="demo"></p>