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

时间:2011-05-31 22:04:23

标签: php javascript date

我决定根据一天中的时间做一个雄心勃勃的情绪变化。我需要花时间将它与任何一天的日落和日出进行比较。

到目前为止,我发现了一些效果很好的javascript here。谁能告诉我如何将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如果在此之后,这是正确的吗?

非常感谢......

3 个答案:

答案 0 :(得分:0)

鉴于那里的代码段,您有两个变量,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上的。我也在使用服务器的时间,这可能与客户完全不同。可能不会开箱即用,但应该让你开始。

答案 1 :(得分:0)

我会使用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

答案 2 :(得分:0)

这个问题没有答案,我最终得到了一个PHP模块和.dat文件安装在我的主机上。 AJAX确实有效,但只有在访问了我网站的一个页面之后 - 这是不可悲的。感谢大家的帮助..