Передача строки Javascript в PHP

Я хочу передать строку javascript для php … WHICH RIGHT после кода .. в скрипте.

<script type="text/javascript"> var myvar = "mytext" ; <?php echo myvar ; ?> </script> 

это не работает. Что мне делать ?

Solutions Collecting From Web of "Передача строки Javascript в PHP"

Когда кто-то посещает веб-сайт, это обычно происходит:

  1. Их браузер отправляет запрос на сервер.
  2. Сервер оценивает этот запрос.
  3. Сервер понимает: «Egad, страница, на которую они запрашивают, имеет PHP!»
  4. Сервер оценивает PHP и отправляет результаты в браузер.
  5. Браузер анализирует содержимое, которое он получает.
  6. Браузер понимает: «Эгад, страница, которую я получил, имеет JavaScript!»
  7. Браузер оценивает JavaScript, полностью на машине клиента.

Таким образом, PHP и JavaScript в основном находятся на разных концах процесса. Только сервер обрабатывает PHP, и только клиент обрабатывает JavaScript.

Чтобы «дать» строку для PHP, вам нужно сделать запрос на страницу PHP, отправив эту строку в качестве переменной GET:

 http://www.yourdomain.com/some_php_page.php?myvar=mytext 

Есть несколько способов сделать это с помощью JavaScript.

  1. Если вам нужно только сделать этот запрос на странице PHP, и вам не нужно беспокоиться о получении какой-либо информации, вы можете просто создать изображение и использовать URL-адрес в качестве источника:

     var fakeImg = new Image(); fakeImg.src = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext'; 

    Даже если вы запрашиваете изображение, сервер этого не знает и обрабатывает ваш запрос, вызывая PHP, оценивая его и т. Д.

  2. Вы можете сделать фактический запрос AJAX. Начните с создания объекта XMLHttpRequest:

     var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); 

    В IE есть некоторые проблемы с кэшированными ответами на запросы AJAX, поэтому сделать URL уникальным:

     var url = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext&unique=whatever'; 

    Скажите своему XHR, куда вы хотите, и как вы хотите, чтобы он туда добрался:

     xhr.open('GET', url, true); // The "true" parameter tells it that we want this to be asynchronous 

    Настройте метод, который будет проверять, когда получен ответ:

     xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status < 400) { success(xhr.responseText); } }; 

    И, наконец, отправьте запрос:

     xhr.send(null); // We set "null" because some browsers are pissy 

    Некоторые примечания должны иметь в виду:

    • Вы должны сами создать функцию success , чтобы обрабатывать строку, возвращаемую вашей страницей PHP.
    • Вы можете передать эту функцию xhr.responseXML если хотите, но это обычно просто хлопот для меня.
    • Использование onreadystatechange способ, которым у меня будет (я считаю), ввести утечки памяти в некоторых версиях IE

PHP выполняется на стороне сервера, а javascript – на стороне клиента, поэтому это означает, что PHP уже выполняется, когда вы отправляете код javascript.

Возможно, вам стоит взглянуть на AJAX.

Вы должны разобраться в различии между клиентской и серверной версиями. Переменная, которую вы вводите в php-коде, ранее не назначается, потому что эта переменная установлена ​​на клиенте. Таким образом, ваш пример кода, по сути, ошибочен. Если вы хотите, чтобы на клиенте (jpp) было доступно значение, доступное на сервере (php), вам нужно что-то сделать с объектом xmlhttprequest javascript (также известным как ajax).

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

Не уверен, что вы пытаетесь достичь, но, возможно, это немного помогает.

Ваш пример несколько запутанный:

 <script type="text/javascript"> var myvar = "mytext" ; <?php echo myvar ; ?> </script> 

Потому что, если я это сделаю:

 <script type="text/javascript"> <?php $myvar = "mytext"; ?> var myvar = "<?php echo $myvar; ?>" ; </script> 

Затем он устанавливает значение JavaScript myvar в значение PHP $myvar поэтому они оба остаются неизменными. Если вы пытаетесь сделать что-то еще, вам нужно расширить свой пример.