Просмотр полной версии : Выполнение PHP-кода в файлах JavaScript
Sergei-b84
22.05.2015, 15:24
Привет всем. У меня есть javascript файл, который генерирует форму регистрации. Полностью приводить не стал, привел только фрагмент. Сейчас мне необходимо, чтобы внутри это файла выполнялся пхп код. Как это реализовать? Можете на примере показать, как объединить два приведенных листинга. Необходимо, например, вывести ФИО не напрямую, а через пхп.
<?php echo 'ФИО';?>
function(){
return'<input type="text" id="overlay-signup-form-name" name="name" class="signup-name" placeholder="{{#esc_attr}}{{#tl}}ФИО{{/tl}}{{/esc_attr}}" autocomplete="off">\n'
})
Dark Surv
22.05.2015, 15:38
чтобы внутри это файла выполнялся пхп код
PHP код на клиенте выполнить нельзя, так как PHP - СЕРВЕРНЫЙ язык,
можно выполнить PHP на сервере, потом принять ответ аяксом
Sergei-b84
22.05.2015, 15:47
А если так? .htaccess
AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js
<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>
Dark Surv
22.05.2015, 15:58
Припустим есть PHP файл <?php echo 'Ваша фамилия'; ?> ($fio = нужное вам значение значение)
что-бы получить $fio на клиенте обращаемся аяксом на сервер
<script type="text/javascript">
var xhr = new XMLHttpRequest();
xhr.open('GET', 'fio.php', true); // url = нужный вам адрес
xhr.send(null);
xhr.onreadystatechange = function(){
if (xhr.readyState != 4) return;
if (xhr.status != 200){
alert(xhr.status + ': ' + xhr.statusText);
}else{ // если нет ошибок возвращаем нужный текст
document.querySelectorAll('#content')[0].innerHTML = '<input type="text" id="overlay-signup-form-name" name="name" class="signup-name" placeholder="' + xhr.responseText + '" autocomplete="off">\n';
}
}
</script>
<div id="content"></div>
Dark Surv
22.05.2015, 16:01
А если так? .htaccess
AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js
<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>
этот вариант НЕПОДХОДИТ потому-что будут выполнятся ВСЕ JavaScript файлы как PHP файлы (если .htaccess в корне сайта)
Sergei-b84
22.05.2015, 16:13
Спасибо. Все работает!!!
Sergei-b84
22.05.2015, 16:15
Хотел спросить, а если нужно получить несколько переменных?
Dark Surv
22.05.2015, 16:17
нужно получить несколько переменных?
можно например в JSON получить и роспарсить
Sergei-b84
22.05.2015, 16:18
Спасибо.
kostyanet
22.05.2015, 17:10
Необходимо, например, вывести ФИО не напрямую, а через пхп.
Когда скрипт оказался в браузере, ему уже никто не поможет кроме браузера. В принципе не важно на каком языке он написан, хоть на перфораторе, интерпретировать и компилировать коды может только браузер. Следовательно если каких-то данных браузеру не хватает, надо за ними идти на сервер и пехепе тут вообще не при чем.
kostyanet
22.05.2015, 17:14
У меня есть javascript файл, который генерирует форму регистрации.
Посылаете ему контрольный массив в json и пусть рендерит форму. Тот самый массив, по которому на сервере скрипт проводит валидацию полученных данных плюс некоторые параметры для рендера, которые на этапе валидации тоже могут быть нужны, скажем чтобы назвать имя поля где ввели неправильно.
Но тут есть одно но. Жырное такое, НО. Если вы будете рендерить хтмл нативными методами, типа там создать ноду, профтыкать в нее проперти, профтыкать в родитель, родителя в боди - у вас даже на хорошей либе получится куча кодов, то есть текстов, байтов, которыми могли бы бы тупо коды хтмля сделанного прямо на сервере. А если js как у вас будет передавать шаблон в хтмл, то вообще эквипенисуально по байтам.
Генерить хтмл имеет смысл когда многое в нем зависит от контекста, а когда там вечное - нахер.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot