Я должен получить доступ к переменной JavaScript с PHP. Вот упрощенная версия кода, который я в настоящее время пробую, который не работает:
<script type="text/javascript" charset="utf-8">
var test = "tester";
</script>
<?php
echo $_GET['test'];
?>
Я - абсолютно новое и для JavaScript и для PHP, таким образом, я был бы очень признателен за любой совет.
ОБНОВЛЕНИЕ: хорошо, я предполагаю, что упростил так слишком много. То, что я пытаюсь сделать, создают форму, которая обновит состояние Twitter при представлении. У меня есть форма, работающая хорошо, но я хочу также добавить данные геолокации. Так как я использую JavaScript (а именно, Google Geolocation API) для получения местоположения, как я получаю доступ к той информации с PHP, когда я отправляю форму?
Короткий ответ: нельзя.
Я не знаю синтаксиса PHP, но могу сказать, что PHP выполняется на сервере, а JavaScript - на клиенте (в браузере).
Вы делаете $_GET, который используется для получения значений формы:
Встроенная функция $_GET используется для сбора значений в форме с method="get".
Другими словами, если бы на вашей странице было:
<form method="get" action="blah.php">
<input name="test"></input>
</form>
Ваш вызов $_GET получил бы значение в этом поле ввода.
Как же получить значение из JavaScript?
Ну, вы можете поместить значение javascript в скрытое поле формы...
<script type="text/javascript" charset="utf-8">
var test = "tester";
// find the 'test' input element and set its value to the above variable
document.getElementByID("test").value = test;
</script>
... elsewhere on your page ...
<form method="get" action="blah.php">
<input id="test" name="test" visibility="hidden"></input>
<input type="submit" value="Click me!"></input>
</form>
Тогда, когда пользователь нажмет на кнопку отправки, он/она отправит запрос "GET" на blah.php, передавая значение в 'test'.
JS основан на браузере, PHP - на сервере. Вы должны сгенерировать некоторый запрос / сигнал на основе браузера, чтобы получить данные из JS в PHP. Взгляните на Ajax .
_GET обращается к переменным строки запроса, test не является переменной строки запроса (PHP никоим образом не обрабатывает JS). Вам нужно переосмыслить. Вы можете создать переменную $ test в php и сделать что-то вроде:
<?php
$test = "tester";
?>
<script type="text/javascript" charset="utf-8">
var test = "<?php echo $test?>";
</script>
<?php
echo $test;
?>
Конечно, я не знаю, зачем вам это нужно, поэтому я не уверен, что это лучшее решение.
РЕДАКТИРОВАТЬ: Как отмечали другие, если переменная JavaScript действительно создается на клиенте, вам понадобится AJAX или форма для ее отправки на сервер.
Поскольку JavaScript - это язык на стороне клиента, а PHP - язык на стороне сервера, вам потребуется физически передать переменную в сценарий PHP, либо включив переменную в загрузку страницы PHP script (script.php? var = test), который на самом деле не имеет ничего общего с JavaScript, или путем передачи переменной в PHP через вызов AJAX / AHAH каждый раз, когда переменная изменяется.
Если вы хотите пойти по второму пути, вы бы посмотрели на XMLHttpRequest или, как мне кажется, на вызовы jQuerys Ajax: http://docs.jquery.com/Ajax
Если вы показываете данные пользователю, сделайте редирект:
<script language="JavaScript">
var tester = "foobar";
document.location="http://www.host.org/myphp.php?test=" + tester;
</script>
или iframe:
<script language="JavaScript">
var tester = "foobar";
document.write("<iframe src=\"http://www.host.org/myphp.php?test=" + tester + "\"></iframe>");
</script>
Если вам не нужен вывод данных пользователю, создайте iframe с шириной=0 и высотой=0.