У меня есть следующий код:
<!DOCTYPE html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API Example: Extraction of Geocoding Data</title>
</head>
<body>
<script type="text/javascript">
var showPosition = function (position) {
document.write(position.coords.latitude + ',' + position.coords.longitude);
}
navigator.geolocation.getCurrentPosition(showPosition);
</script>
</body>
Этот маленький скрипт выводит местоположение пользователя в виде широты и долготы. Вместо того, чтобы выводить это на странице, я хочу сохранить долготу и широту в двух отдельных переменных, чтобы я мог получить расстояние между местоположением пользователя и данным пунктом назначения. Я провел небольшое исследование и понимаю, что это можно сделать только с помощью AJAX, однако я понятия не имею, как это сделать.
Вот когда приходит мой вопрос, как мне сохранить эти значения из JS в переменной PHP?
Кроме того, если есть какой-либо способ быстрее рассчитать расстояние в км между местоположением пользователя и данным пунктом назначения, я открыт для предложений.
Спасибо!
Да, вы должны использовать AJAX.
Обратите внимание, что JS (способ, которым вы собираетесь его использовать) работает на стороне клиента (в браузере) и PHP работает на сервере, что во многих случаях приводит к асинхронной связи, следовательно, AJAX.
В вашем коде JavaScript вам нужно создать XMLHttpRequest
объект, который может обрабатывать связь:
var xhr = new XMLHttpRequest();
Пример того, как получить ответ с сервера:
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status == 200) {
// do something with xhr.responseText
}
}
}
Пример того, как отправить данные:
xhr.open("POST", "serverside.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(content);
content
будут данные, которые вы отправляете на сервер, например "c=HelloWorld"
В вашем php-скрипте на стороне сервера вам нужно обрабатывать полученные данные. Это может выглядеть примерно так:
<?php
if (isset($_POST['c'])) {
echo htmlspecialchars($_POST['c'], ENT_QUOTES, 'UTF-8');
}
?>
Затем сервер должен ответить «HelloWorld».
Других решений пока нет …