Получите доступ к переменной JavaScript от PHP

Я должен получить доступ к переменной 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, когда я отправляю форму?

27
задан Peter Mortensen 11 April 2011 в 22:24
поделиться

5 ответов

Короткий ответ: нельзя.

Я не знаю синтаксиса 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'.

34
ответ дан 28 November 2019 в 05:17
поделиться

JS основан на браузере, PHP - на сервере. Вы должны сгенерировать некоторый запрос / сигнал на основе браузера, чтобы получить данные из JS в PHP. Взгляните на Ajax .

0
ответ дан 28 November 2019 в 05:17
поделиться

_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 или форма для ее отправки на сервер.

2
ответ дан 28 November 2019 в 05:17
поделиться

Поскольку JavaScript - это язык на стороне клиента, а PHP - язык на стороне сервера, вам потребуется физически передать переменную в сценарий PHP, либо включив переменную в загрузку страницы PHP script (script.php? var = test), который на самом деле не имеет ничего общего с JavaScript, или путем передачи переменной в PHP через вызов AJAX / AHAH каждый раз, когда переменная изменяется.

Если вы хотите пойти по второму пути, вы бы посмотрели на XMLHttpRequest или, как мне кажется, на вызовы jQuerys Ajax: http://docs.jquery.com/Ajax

4
ответ дан 28 November 2019 в 05:17
поделиться

Если вы показываете данные пользователю, сделайте редирект:

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

2
ответ дан 28 November 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: