2011-05-31 25 views
0

我已決定要根據一天的時間做出一個雄心勃勃的情緒變化。我需要得到時間,並與任何一天的日落和日出進行比較。從JavaScript中取得經緯度/長度,用於PHP中的date_sunset中使用

到目前爲止,我找到了一些javascript here,效果很好。任何人都可以告訴我,我可能會給PHP函數date_sunset提供經緯度嗎?我有一個使用$_SERVER['REMOTE_ADDR']的PHP變量的IP,但這就是我的全部。我從來沒有使用過這個函數,也沒有嘗試過將PHP和JS結合起來,所以我不能做太多的事情。有任何想法嗎?

- 更新 -

我一直在嘗試使用jQuery的$就功能。這是我的代碼;

<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是否正確?

非常感謝......

+0

真的,你只需要擔心緯度。 – 2011-05-31 22:21:03

回答

0

這個問題沒有答案,因爲這樣,我最終得到一個PHP模塊,並安裝在我的主持對我來說.dat文件。 AJAX確實有效,但只有在我的網站上訪問過一個頁面後才能訪問 - 這是沒有用的。感謝大家的幫助..

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上的服務器。我也在使用服務器的時間,這可能與客戶完全不同。可能不會開箱即用,但應該讓你開始。

+0

非常感謝您的回覆。我會看看這個,並試圖找出該做什麼。 – Dan 2011-05-31 22:29:56

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

+0

感謝這一點,我要看看這兩個答覆,並試圖找出該怎麼做。我從來沒有使用AJAX,儘管jQuery已經啓動並運行在我的網站上的其他東西。 – Dan 2011-05-31 22:31:07

+0

嗨,我只是試圖讓這個工作 - 在評論位說,做一些與服務器響應,我應該怎麼做?到目前爲止,我已經設置這個將變量發送到我的WordPress主題中的header.php,它不會返回任何東西... – Dan 2011-06-01 10:27:29

+0

答案更新。 – atlavis 2011-06-01 11:29:18