Как получить значение переменной JavaScript в PHP

Я хочу значение переменной 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> 

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

Вам нужно будет использовать 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 

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

 <script> var p1 = "success"; </script> <?php echo "<script>document.writeln(p1);</script>"; ?> 

Вы можете начать с изучения того, что такое 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> 

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

 document.cookie="profile_viewer_uid=1"; 

Затем присоединяется к нему через php через

 $profile_viewer_uid = $_COOKIE['profile_viewer_uid']; 

PHP работает на сервере. Он выводит некоторый текст. Затем он перестает работать.

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

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

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

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

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

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

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

Это можно легко сделать, изменив или перезагрузив страницу (например, отправив форму или переадресуя с помощью js, как в ответе Криса ).

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

Простым примером может быть:

 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.

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

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

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