Вывод JS через PHP
292 повідомлення
#15 років тому
Вопрос в следующем: как выводить js средствами PHP?На сколько я помню, нужно в js коде выводимом поставить некий комментарий, указывающий тип данных что-то вроде <!-- чего-то там DATA...
вот выпало из головы и все тут. Подскажите пожалуйста

626 повідомлень
#15 років тому
Представьте, что JS у вас лежит в отдельном файле на сервере - некий sample.jsСтраница к нему обращается - сервер его отдает как есть, только Content-type ставит application/x-javascript
Развиваем пример - теперь страница обращается к PHP-скрипту. Отдать скрипт должен точно то же самое что и сервер - заголовок Content-type: application/x-javascript (ну и прочие нужные заголовки) и собственно текст js-ника после пустой строки.
292 повідомлення
#15 років тому
Вы меня не поняли. Мне нужн овыводить Js код как-то так:<?php
echo "<script type=\"text/javascript\">....</script>"
?>
Причем, отдается этот код через AJAX. Смотрю FireBug`ом весь остальной HTML код отдается нормально, а вот яву тупо не отдает.
3562 повідомлення
#15 років тому
По-моему он не яву не отдает, а вообще ничего не отдает (скорее всегоп отому что его не спрашивают).
292 повідомлення
#15 років тому
В том и дело, что html который генерируется весь отдается, а вот весь код с js нет..странно..
626 повідомлень
#15 років тому
Цитата ("Vatanaba"):Мне нужн овыводить Js код как-то так:
<?php
echo "<script type=\"text/javascript\">....</script>"
?>
Как-то так не получится. Вы просто подумайте КУДА вы код выдаете и КТО, КОГДА и КАК будет его выполнять?
PS. Через AJAX скрипты грузить - идея странная, он не для того придуман.
5330 повідомлень
#15 років тому
Странно. у меня отдает.. полтора сайта на этом сделано.. в js параметры пихаю (да, мы извращенцы)
58 повідомлень
#15 років тому
Цитата ("Demiurh"):Цитата ("Vatanaba"):Мне нужн овыводить Js код как-то так:
<?php
echo "<script type=\"text/javascript\">....</script>"
?>
Как-то так не получится. Вы просто подумайте КУДА вы код выдаете и КТО, КОГДА и КАК будет его выполнять?
PS. Через AJAX скрипты грузить - идея странная, он не для того придуман.
Такой подход,а именно динамическая отрисовка тега <script> зовется JsHttpRequest... все там замечательно получается надо только спец. библиотеку использовать...
2989 повідомлень
#15 років тому
Цитата ("Vatanaba"):<?php
echo "<script type=\"text/javascript\">....</script>"
?>
Причем, отдается этот код через AJAX. Смотрю FireBug`ом весь остальной HTML код отдается нормально, а вот яву тупо не отдает.
И не будет. AJAX - это тоже javascript и он не даст вписать html теги самого javascript. Обходиться очень просто: вместо "javascript" пишем что-то такое "jav"+"ascript", "script" - "scr"+"ipt", и т.д. И все пройдет. А вот будет ли все это работать - это еще вопрос.
JsHttpRequest - очень хорошая библиотека ajax'a. Давно ей пользуюся. Огромное достоинство - в ней уже решены все проблемы с кодировками. Заметный недостаток нашел пока только один: в некоторых случаях, если не удалось инициализировать объект, выводит фатальную ошибку (т.е. скрипт останавливается с выводом ошибки на экран) и подавить мне это пока не удалось.
2989 повідомлень
#15 років тому
Подгружать файлы javascript просто так нельзя. Хотя все браузеры сейчас и поволяют это сделать, но файлы скриптов и стилей должны грузиться внутри тега head. Проблема в том, что чтобы эти файлы выполнились, требуется повторная обработка документа после подгрузки файла. При изменении содержимого тега head это происходит автоматически. А если подгрузить куда-нибудь - это уж как конкретный браузер отработает. Подгружать можно например так://list of files already added
var externalFilesAdded = '';
function loadExternalJsCssFile(fileName, fileType) {
if (externalFilesAdded.indexOf('') == -1) {
if (fileType == 'js') {
//if fileName is a external JavaScript file
var fileRef = document.createElement('script');
fileRef.setAttribute('type','text/javascript');
fileRef.setAttribute('src', fileName);
} else if (fileType == 'css') {
//if fileName is an external CSS file
var fileRef = document.createElement('link');
fileRef.setAttribute('rel', 'stylesheet');
fileRef.setAttribute('type', 'text/css');
fileRef.setAttribute('href', fileName);
}
if (typeof fileRef != 'undefined') {
document.getElementsByTagName('head').appendChild(fileRef);
externalFilesAdded += '';
}
}
}
50 повідомлень
#15 років тому
Цитата ("ArtPro"):Странно. у меня отдает.. полтора сайта на этом сделано.. в js параметры пихаю (да, мы извращенцы)я думал, что все так делают)
1599 повідомлень
#15 років тому
Аякс в аяксе о_О да вы батенька, извращенец! А можете привести пример задачи, которая требует что-то такое.. я пока даже осознать не могу что это за зверь, зная, что такое аякс) Т.е. по событию происходит обращение к серверу, сервер что-то выдает клиенту и тот по этому факту запускает еще одно обращение к серверу.. или как? Не, правда, интересно о_О
5330 повідомлень
#15 років тому
Кто говорит про ajax в ajax мы говорим про JS в php
А ваш пример... хм.. PM на JS ... запрос, получили список пользователей, пробежались по нему на предмет оффлайн сообщений, по итогам запросили сообщения и вернули их в данные по каждому абоненту.
1599 повідомлень
#15 років тому
Цитата ("ArtPro"):Кто говорит про ajax в ajax
мы говорим про JS в php
Ну, вы может быть и говорите об этом) а автор
Цитата ("Vatanaba"):
Ну а как Вы сделаете аякс в аяксе?
вот мне и стало просто любопытно)
2989 повідомлень
#15 років тому
Цитата ("Paralysed"):Ну а как Вы сделаете аякс в аяксе?
А почему нет? Другой вопрос - зачем это нужно. И синхронизировать, наверняка, придется...
17 повідомлень
#15 років тому
Попробуйте использовать идеи из данного примера:В html код вставляем так
<script type="text/javascript" src="/log.php"></script>
где, log.php:
function ajax_code($str) {
$str = str_replace("'","\'",$str);
$str = str_replace('"',"\"+String.fromCharCode(34) + \"",$str);
return '"'.$str.'"';
}
$str = '<div id="test"><a href="/test2/"><img src="" /></a></div>';
print 'document.write('.ajax_code($str).')';
Вот что в результате сгенерируется на странице
<script>
document.write(" <div id="+String.fromCharCode(34) + "test"+String.fromCharCode(34) + "><a href="+String.fromCharCode(34) + "/test2/"+String.fromCharCode(34) + "><img src="+String.fromCharCode(34)+String.fromCharCode(34) + "></a></div>\r\n ")
</script>