从JavaScript中获取一个lat/long对,用于PHP中的date_sunset


Take a lat/long pair from JavaScript for use in date_sunset in PHP

我决定根据一天中的时间进行一次雄心勃勃的情绪改变。我需要得到时间,并将其与任何一天的日落和日出进行比较。

到目前为止,我在这里找到了一些运行良好的javascript。有人能告诉我如何将lat和long赋予PHP函数date_sunset吗?我在一个使用$_SERVER['REMOTE_ADDR']的PHP变量中有IP,但这就是我所拥有的全部。我真的不能做太多其他事情,因为我从未使用过这个函数,也从未尝试过将PHP和JS结合起来。有什么想法吗?

--更新--

我一直在尝试使用jQuery$.ajax函数。这是我的密码;

<script language="JavaScript">
var lat = geoip_latitude();
var long = geoip_longitude();
$(document).ready(function(){
   //var url = 'http://www.ransomedesign.co.uk/web/?lat=' + lat + '&long='+ long;
   // $.get(url);
  $.ajax({
  type: "GET",
  data: { lat:lat, long:long},
  url: "http:www.ransomedesign.co.uk/web/",
  success: function() { alert("you win"); }
  })
});
</script>

有两种不同的方法。(第一个被评论掉了)。这确实填充了我的$_SERVER php代码,但仅在我的网站的第二个页面请求时。在加载任何内容之前,我真的需要在第一次访问时对此进行处理。在此之后,值将存储在会话中,php将执行其余操作

有人能看到这个代码出了什么问题吗?或者为什么它不能立即工作?我的php如果在这之后,这是正确的吗?

非常感谢。。。

给定该片段,您将有两个变量,geoip_latitudegeoip_longitude。取这些变量,将它们放入对服务器的AJAX调用中,然后由服务器进行计算:

html:

<div id="sunset"></div>
<script>
    $('#sunset').load('/path/to/script.php?lat=' + geoip_latitude + '&lon=' & geoip_longitude);
</script>

php:

<?php
$lat = $_GET['lat'];
$lon = $_GET['lon'];
echo date_sunset(time(), SUNFUNCS_RET_STRING, $lat, $long);

这假设您已经加载了jquery,并且服务器在PHP v5上。我还使用了服务器的时间,这可能与客户端的时间完全不同。可能不会开箱即用,但应该让你开始。

我会使用AJAX来实现这一点。您使用GeoIP JavaScript,因此首先获得latlong:

var lat = geoip_latitude () ;
var long = geoip_longitude () ;

然后将其发送到服务器脚本,例如mood.php:

var xhr = new XMLHttpRequest () ;
xhr . onreadystatechange = function ()
{
   if ( xhr . readyState == 4 && xhr . status == 200 )
   {
      // do something with server response
   }
}
xhr . open ( "POST", "mood.php", true ) ;
xhr . setRequestHeader ( "Content-type", "application/x-www-form-urlencoded" ) ;
xhr . send ( "lat=" + lat + "&long=" + long ) ;

mood.php可能看起来像:

<?php
   $lat = $_POST [ "lat" ] ;
   $long = $_POST [ "long" ] ;
   echo "something depending on lat and long" ;
?>

编辑。

若服务器发送响应,您可以通过调用xhr . responseText:来读取

xhr . onreadystatechange = function ()
{
   if ( xhr . readyState == 4 && xhr . status == 200 )
   {
      alert ( "Server response: " + xhr . responseText ) ;
   }
}

若服务器发送XML内容,那个么您就可以调用xhr . responseXML——它会触发本机XML解析器。

https://developer.mozilla.org/en/AJAX/Getting_Started

这个问题没有答案,我最终在我的主机上安装了一个PHP模块和.dat文件。AJAX确实起了作用,但只是在我的网站上的一个页面被访问后-遗憾的是,这没有用。谢谢大家的帮助。。