如何将Geolocation数据从浏览器发送到服务器?

时间:2013-04-26 06:42:11

标签: javascript html5 geolocation

似乎我需要在浏览器中在客户端运行一个函数,然后将经度和经度发送到服务器,例如ajax调用,然后使用响应数据在页面上反映它?那么为此我需要在服务器端添加一个新的端点来管理这样的请求?当用户加载某个页面时,是否有可能从传入请求中获取该数据?

2 个答案:

答案 0 :(得分:1)

正如您自己所说,地理位置在客户端的Javascript中运行。当第一个对服务器的请求已经完成,HTML被传递到客户端并执行Javascript时,就会执行此操作。所以不,不可能将地理位置数据与第一个请求一起使用,因为这些数据会在以后执行。

您在初始请求中可以执行的操作是使用用户的IP来获得至少一个近似的地理位置。我认为一般来说这是一个很好的做法,因为用户可能拒绝或只是忽略向您的网站提供地理位置数据。使用基于IP的方法,您至少可以获得后备解决方案。

答案 1 :(得分:1)

对于地理定位,您有两种解决方案。

一个是HTML5地理定位API。 如果它存在(您可以使用Modernizr进行检查),请将位置数据(整个location对象)发送到服务器上的ajax脚本以及用户ID或内容。

如果用户拒绝HTML5地理位置或使用旧浏览器,只需再次使用ajax端点,但使用null位置对象。检查服务器端,然后如果为null,检查标头中的传入IP,然后使用GeoIP数据库找到您的用户(约40Km左右的精度)。

这样你就有了一个客户端js和一个服务器端的ajax脚本,它们可以协同工作,或多或少地准确定位你的用户,但总是找不到;)

编辑:如果您希望第一页上的传入地理位置加载,只需从请求标头中获取传入的IP,使用GeoIP并获取您的用户地理位置; - )