在页面呈现之前运行 JavaScript 和控制器操作
Run Javascript and Controller Actions Before Page Renders
我有一个简单的rails应用程序,可以在用户到达网站时对用户进行地理定位(此代码位于我的应用程序.html.erb文件的head标签中):
<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>
坐标将保存为饼干。根据这些坐标,它们用于从控制器中的数据库中检索一组特定的数据。然后,这些结果将显示在视图中。
目前,当用户第一次到达站点时,页面是空白的,当页面刷新时,位置信息通过控制器并显示相应的数据。
我正在尝试做的是在初始页面加载时完成地理位置和控制器操作,以便在用户首次到达站点时显示数据。或者更简单地说:
- 获取用户位置的坐标
- 将坐标传递给控制器并检索数据
- 然后在视图中显示数据
我认为我问题的根源是 javascript 和控制器事件的排序,但我不确定如何解决这个问题。
由于 javascript 在浏览器中运行并且页面呈现在服务器端,因此您需要重新加载整个页面或在 showPosition
中进行一些 ajax 更新。否则,坐标将始终落后一步:如果您移动到另一个位置,cookie 中的坐标将来自最后一个位置,而不是当前位置。
相关文章:
- Javascript运行php文件,然后下载文件
- JavaScript运行时是如何工作的
- Javascript运行Total保持添加
- JavaScript运行时事件循环现有技术
- 当出现javascript运行时错误时会发生什么
- 使用JavaScript运行脚本
- 在gwt HTMLPanel中使用JavaScript运行Google图表
- 在从HTML表单提交时从javascript运行php
- JavaScript运行时错误:完成此操作所需的数据尚不可用
- RoR最快的javascript运行时
- Windows 8应用程序正在运行,现在得到0x800a1391-JavaScript运行时错误:'WinJS&
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- JavaScript运行后,页面在右侧被切断
- JavaScript 运行时错误仅在本地计算机上
- JavaScript 引擎和 JavaScript 运行时环境有什么区别
- 如何从javascript运行java代码
- Javascript 运行时错误:“应用程序未定义”
- 从Javascript运行PHP文件来检查在线用户:表示未登录的用户是
- JavaScript运行时错误,未定义jQuery
- MVC4和日期选择器:“;0x800a01b6-JavaScript运行时错误:对象没有't支持属性或方法