2011-07-04 9 views
1

HTML5ジオロケーションAPIを使用して、私はJavascriptでいくつかの変数を使用して終了しました。これを続行するには、PHPに渡す必要があります。私のコードは以下の通りですが、どのように達成できますか?私は$variable = <script>document.write(variable);</script>;PHPのJavaScript変数

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset=utf-8 /> 
<meta name="viewport" content="width=620" /> 
<title>test</title> 
</head> 
<body> 
<script type="text/javascript"> 
//Check if browser supports W3C Geolocation API 
if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction); 
    } 
else { 
    document.write("Geolocation is required for this page."); 
    } 
function successFunction(position) { 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
    } 
function errorFunction(position) { 
    document.write("Error"); 
    } 
</script> 
<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
$lat = //TAKE FROM JAVASCRIPT 
$lng = //TAKE FROM JAVASCRIPT 
$url = "http://api.geonames.org/findNearbyPlaceNameJSON?lat='.$lat.'&lng='.$lng.'&username=demo"; 
$json = file_get_contents($url); 
$data = json_decode($json, true); 
$geonames = $data['geonames'][0]; 
$town = $geonames['name']; 
echo "Displaying results near ".$town.". <a href=#>Not in ".$town."?</a>"; 
?> 
</body> 
</html> 

EDITのラインに沿って物事を試してみた:OK、私はいくつかの宿題をやったし、今私は、私は2つの上に滑らかなAJAXのXMLHttpRequestで探しています知っています。しかし、その構文は私を少しスローしました(ブラウザ間の問題はもちろんです)。誰も私にこれと正しい方向に微笑を与えることができますか?

+5

なぜこの質問は毎日現時点で尋ねられていますか?右側のセバスチャンの重複のうちの1つを見てください。 –

+0

私が試したソリューションはうまくいきませんでした。私はそれがJS機能のためだと推測しました。私の質問はこのプロジェクトに固有のものでした。 – Sebastian

+0

[入力の変化する値をPHP変数にするためのjQueryの使い方?](http://stackoverflow.com/questions/6557331/how-to-use-jquery-to-make-an-inputs-changing -value-a-php-variable) –

答えて

0

あなたは、ブラウザ側のスクリプト

ブラウザ側の

$変数。消えるとともに、サーバー側のスクリプトを混合しているので、それは常に保持します「のdocument.write(変数);」

ただし、AJAXを使用してデータをPHP &に送信して処理することはできます。

3

JavaScriptがサーバーによって解釈された後にのみJavaScriptがクライアントによって解釈されると考えると、これは不可能です。

JavascriptデータをPHPに渡してPHP結果を表示するには、AJAX/XHR経由でJavascriptで取得したデータをPHPに送信し、Javascriptを使用してPHPスクリプトからの応答を表示するしかありません。

1

javascript変数をPHPに渡すには、ページがブラウザに送信されたときにPHPの実行が停止するため、新しいページをリクエストする必要はありません。

GET、POST、COOKIEのいずれかで渡すことができます。 GETは最も簡単な方法です:http://domain.com/page?town=XYZ。後で行う必要があるのは、あなたの町をPHPセッションに保存し、ヘッダー( 'Location:http://domain.com/page')を使用して目的のページにリダイレクトすることです。

Ajaxリクエストを使用すると、セッションやページのリロード。