Я хочу передать строку javascript для php … WHICH RIGHT после кода .. в скрипте.
<script type="text/javascript"> var myvar = "mytext" ; <?php echo myvar ; ?> </script>
это не работает. Что мне делать ?
Когда кто-то посещает веб-сайт, это обычно происходит:
Таким образом, PHP и JavaScript в основном находятся на разных концах процесса. Только сервер обрабатывает PHP, и только клиент обрабатывает JavaScript.
Чтобы «дать» строку для PHP, вам нужно сделать запрос на страницу PHP, отправив эту строку в качестве переменной GET:
http://www.yourdomain.com/some_php_page.php?myvar=mytext
Есть несколько способов сделать это с помощью JavaScript.
Если вам нужно только сделать этот запрос на странице PHP, и вам не нужно беспокоиться о получении какой-либо информации, вы можете просто создать изображение и использовать URL-адрес в качестве источника:
var fakeImg = new Image(); fakeImg.src = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext';
Даже если вы запрашиваете изображение, сервер этого не знает и обрабатывает ваш запрос, вызывая PHP, оценивая его и т. Д.
Вы можете сделать фактический запрос 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
поэтому они оба остаются неизменными. Если вы пытаетесь сделать что-то еще, вам нужно расширить свой пример.