Как получить значение переменной JavaScript в PHP - PullRequest
22 голосов
/ 20 марта 2012

Я хочу значение переменной JavaScript, к которой я мог бы получить доступ, используя PHP. Я использую приведенный ниже код, но он не возвращает значение этой переменной в PHP.

// set global variable in javascript
    profile_viewer_uid = 1;

// php code

$profile_viewer_uid=$_POST['profile_viewer_uid']; 

это дает мне следующую ошибку: -

A PHP Error was encountered
Severity: Notice
Message: Undefined index: profile_viewer_uid

Другой php-код, который я использовал, который дает пустое значение

$profile_viewer_uid = "<script language=javascript>document.write(profile_viewer_uid);</script>

Когда я повторяю, это ничего не показывает.

Ответы [ 9 ]

17 голосов
/ 20 марта 2012

Вам нужно будет использовать JS для отправки URL-адреса обратно с такой переменной, как: http://www.site.com/index.php?uid=1

используя что-то подобное в JS:

window.location.href=”index.php?uid=1";

Тогда в коде PHP используйте $ _GET:

$somevar = $_GET["uid"]; //puts the uid varialbe into $somevar
13 голосов
/ 25 июля 2014

Вот рабочий пример: Получить значение переменной javascript на той же странице.

<script>
var p1 = "success";
</script>

<?php
echo "<script>document.writeln(p1);</script>";
?>
8 голосов
/ 24 сентября 2015

Добавьте файл cookie с переменной javascript, к которой вы хотите получить доступ.

document.cookie="profile_viewer_uid=1";

Затем получает доступ к php через

$profile_viewer_uid = $_COOKIE['profile_viewer_uid'];
6 голосов
/ 20 марта 2012

Возможно, вы захотите начать с изучения Javascript и php. Javascript - это скриптовый язык на стороне клиента , работающий в браузере компьютера клиента, подключенного к веб-серверу, на котором работает php. Эти языки не могут общаться напрямую .

В зависимости от вашей цели вам нужно будет отправить AJAX запрос на получение или публикацию на сервер и вернуть json / xml / html / любой ответ, который вам нужен, и вставить результат обратно в структуру DOM сайта. Для этого я предлагаю Jquery, BackboneJS или любую другую инфраструктуру JS. См. Примеры в документации Jquery.

Если вам нужно передать данные php в JS на том же сайте, вы можете отобразить данные как JS и преобразовать свои данные php с помощью json_encode () в JS.

<script type="text/javascript>
    var foo = <?php echo json_encode($somePhpVar); ?>
</script>
2 голосов
/ 19 октября 2017

Если вы хотите использовать переменную js в php-скрипте, вы ДОЛЖНЫ передать ее в HTTP-запросе.

Это можно сделать, отправив или перезагрузив страницу (согласно Chris answer ).

Если вы не хотите перезагружать страницу, вы должны использовать AJAX , который предназначен именно для связи между веб-страницей (js) и сервером (php) безперезагрузка / изменение страницы.

Базовым примером может быть:

var profile_viewer_uid = 1;
$.ajax({
  url: "serverScript.php",
  method: "POST",
  data: { "profile_viewer_uid": profile_viewer_uid }
})

А в файле serverScript.php вы можете сделать:

 $profile_viewer_uid = $_POST['profile_viewer_uid'];
 echo($profile_viewer_uid);
 // prints 1

Примечание:в этом примере я использовал jQuery AJAX , который быстрее реализуется.Вы можете сделать это в чистом JS.

2 голосов
/ 20 марта 2012

PHP работает на сервере. Это выводит некоторый текст. Тогда он перестает работать.

Текст отправляется клиенту (браузеру). Затем браузер интерпретирует текст как HTML и JavaScript.

Если вы хотите получить данные из JavaScript в PHP, вам нужно сделать новый HTTP-запрос и запустить новый (или тот же) PHP-скрипт.

Вы можете сделать HTTP-запрос из JavaScript, используя форму или Ajax.

1 голос
/ 20 марта 2012

Это два разных языка, которые работают в разное время - вы не можете взаимодействовать с ними таким образом.

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

0 голосов
/ 15 июля 2015

Это может быть немного сложнее, но безопасный способ - установить файл cookie javascript, а затем забрать его с помощью переменной cookie php. Затем назначьте эту переменную php сеансу php, который будет хранить данные более надежно, чем cookie.удалите куки, используя JavaScript и перенаправьте страницу на себя.Учитывая, что вы добавили команду php для перехвата переменной, вы получите ее.

0 голосов
/ 20 марта 2012

Вам необходимо добавить это значение к данным формы, отправляемым на сервер.Вы можете использовать

<input type="hidden" value="1" name="profile_viewer_uid" id="profile_viewer_uid">

внутри тега формы.

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