2011-07-04 3 views
1

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

<!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: Хорошо, я сделал домашнее задание, и теперь я знаю, что я смотрю на AJAX XMLHttpRequest, чтобы пятно над ними. Однако его синтаксис слегка меня бросил (не говоря уже о проблемах с кросс-браузером). Может ли кто-нибудь дать мне толчок в правильном направлении с этим?

+5

Почему этот вопрос задают каждый день в данный момент? Взгляните на одну из миллиметров дубликатов на правую сторону, Себастьян. –

+0

Решения, которые я пытался, не помогли, и я предположил, что это связано с функциями JS, поэтому мой вопрос был специфичен для этого проекта. – Sebastian

+0

Возможный дубликат [Как использовать jQuery для изменения значения ввода переменной php?] (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 интерпретируется клиентом только после того, как сервер интерпретирует PHP, это невозможно.

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

1

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

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

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

Смежные вопросы