Переменная Javascript в PHP - PullRequest
1 голос
/ 04 июля 2011

Используя HTML5 Geolocation API, я закончил с некоторыми переменными в Javascript, которые мне нужно передать в PHP, чтобы продолжить. Мой код ниже, как это может быть достигнуто? Я пробовал что-то вроде $variable = <script>document.write(variable);</script>;

<!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>

РЕДАКТИРОВАТЬ: ОК, я сделал домашнее задание, и теперь я знаю, что смотрю на AJAX XMLHttpRequest, чтобы скользить по ним. Тем не менее, его синтаксис меня слегка отбросил (не говоря уже о проблемах между браузерами). Кто-нибудь может дать мне толчок в правильном направлении с этим?

Ответы [ 3 ]

3 голосов
/ 04 июля 2011

Учитывая, что Javascript интерпретируется клиентом только после того, как сервер интерпретирует PHP, это невозможно.

Ваш единственный способ передать данные Javascript в PHP и затем показать результаты PHP - это отправить данные, полученные с помощью Javascript, в PHP через AJAX / XHR, а затем использовать Javascript для отображения ответа из скрипта PHP.

1 голос
/ 04 июля 2011

Чтобы передать переменные javascript в PHP, у вас не будет выбора, кроме как запросить новую страницу, поскольку PHP прекращает выполнение при отправке страницы в браузер.

Вы можете перейти на нее либо через GET, POSTили КУКИ.GET - самый простой способ: http://domain.com/page?town=XYZ. Все, что вам нужно после этого, - сохранить свой город в сеансе PHP и перенаправить на нужную страницу с помощью заголовка ('Location: http://domain.com/page')

Использование AjaxЗапрос позволит вам сделать это, не прибегая к сеансам и перезагрузкам страниц.

0 голосов
/ 04 июля 2011

Вы смешиваете сценарии на стороне сервера вместе со сценариями на стороне браузера

$ переменная исчезает на стороне браузера и поэтому всегда будет содержать "document.write (variable);"во что бы то ни было написано внутри скрипта.

Однако вы можете использовать AJAX для отправки данных обратно в php и обработки их там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...