Перейти к содержимому



  • Закрытая тема Тема закрыта

Подключение внешнего JS-файла, сгенерированного с помощью PHP

#1 Power

Power
  • Пользователь
  • 24 сообщений
  • Репутация: 0
0

Отправлено 24 Декабрь 2010 - 17:55

Мне необходимо к странице подсоединить внешний php файл, который бы генирировал блок ссылок. Для этого я сделал следующее:
<script language="JavaScript" src="link.php"></script>
Структура файла link.php проста, он генирирует ссылки и с помощью document.write(); прописывает эти ссылки в документ.
Но на экран к сожалению ничего не выводится.
Если вместо РНР файла прикреплять JS файл, то все работает отлично.
<script language="JavaScript" src="link.js"></script>
Но мне надо, чтобы к странице подгружался именно РНР файл, т.к. он еще взаимодействует с БД.
Если послать заголовок типа:
header('Content-Type: text/javascript; charset=utf-8');
То это ничего не дает.
Пожалуйста, помогите? Как нужно правильно сделать?

 

 

  • 0

#2 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 24 Декабрь 2010 - 18:01

Power, зачем это всё выдумывать?
Чем вас не устраивает использования include() для вставки php кода с файла?
  • 0

Сколько лет прошло, а ссылки всё ещё лучше покупать тут



#3 Power

Power
    Topic Starter
  • Пользователь
  • 24 сообщений
  • Репутация: 0

Отправлено 24 Декабрь 2010 - 18:06

Просто это код будет размещен на нескольких сайтах. Поэтому include не подходит.
  • 0

#4 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 24 Декабрь 2010 - 18:39

Файл PHP никак - сервер его просто не отдаст. Если бы все было так просто, то запросто можно было бы воровать скрипты и ломать сайты :)
  • 0


#5 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 24 Декабрь 2010 - 21:58

Power,
вы сами то видите, что делаете? Хотите подключить php-файл, а команду пишите для подключения Javascript.
Для включения php-файлов в ваш код используется команда (внимание, сюрприз!) на языке php:

<?php
include "link.php";
?>


И еще. Разберитесь, пожалуйста, в разнице между серверными языками (к коим относится php) и клиентскими языками (к которым относится Javascript):
разница между ними в том, что
* инструкции php написаны для веб-сервера и выполняются тогда, когда сервер формирует html файл согласно инструкциям php, ДО того как отослать этот файл клиенту.
* а инструкции Javascript предназначены для клиента, т.е. браузера (IE, FF, Opera и проч.) и, соответственно, выполняются, когда html файл уже пришел на компьютер пользователя.

Т.е. эти скрипты строго разнесены и по времени и по месту выполнения.


  • 0

#6 Power

Power
    Topic Starter
  • Пользователь
  • 24 сообщений
  • Репутация: 0

Отправлено 25 Декабрь 2010 - 12:48

yury, конечно спасибо за подробное объяснение. Все, что Вы написали я знаю.
Кстати Вы немного не правы, с помощью
<script language="JavaScript" src="путь до файла"></script>
Можно подключать любые файлы и JS и PHP и тд. Эта конструкция просто подгружает в текущий документ внешний файл.
Все рекламные коды работают именно по такому принципу.

ЗЫ: кстати я разобрался в чем была моя ошибка.
  • 0

#7 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 25 Декабрь 2010 - 13:49

А можно полюбопытствовать в чем была ошибка? Просто я впервые слышу, что можно с помощью конструкции javascript подключать любый файлы, а тем более PHP :) Ну не могу я поверить в то, что сервер вот запросто так отдает куда-то вне серверный код. Можно пример кода, в котором бы подключался файл PHP с другого домена и выводилось значение переменной подключаемого файла? С нетерпением жду ответа ;)
  • 0


#8 Power

Power
    Topic Starter
  • Пользователь
  • 24 сообщений
  • Репутация: 0

Отправлено 25 Декабрь 2010 - 15:26

Нет, естественно сервер не отдает исходный код РНР файла. Он выводит лишь только результат обработки, а после с помощью функции document.write(); это прописывается в основной документ. Вот и все.
Это полностью заменяет фрейм. Т.к. фрейм тоже может подгружать файлы.
ЗЫ: ошибка заключалась в том, что забыл поставить скобку }
  • 0

#9 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 25 Декабрь 2010 - 16:46

Я же просил пример кода :)
Ок, я сам набросал код, а Вы просто немного подправьте что надо в файле, в котором подключается внешний скрипт:
подключаемый файл inc.php, находящийся по адресу http://test1.ru/inc.php:
<?php
$a = "Это текст из подключаемого файла другого домена";
echo $a;
?>
Файл, в который подключаем - test.php - расположен просто на локалхосте - http://localhost/test.php
<html>
<head>
<script type="text/javascript" src="http://test1.ru/inc.php"></script>
</head>
<body>
<script type="text/javascript">
document.write(что же здесь надо прописать, чтобы вывести результат выполнения внешнего PHP-кода?);
</script>
</body>
</html>
Сделал по Вашему рецепту. Как при помощи метода document.write вывести значение переменной $a?
Опять же, с нетерпением жду ответа ;)
  • 0


#10 Power

Power
    Topic Starter
  • Пользователь
  • 24 сообщений
  • Репутация: 0

Отправлено 25 Декабрь 2010 - 18:32

Вы меня не поняли
Файл inc.php
<?php
$a = "Это текст из подключаемого файла другого домена";
echo "document.write('".$a."')";
?>
Файл к которому подключаем inc.php
<html>
<head>
<title>Пример</title>
</head>
<body>
<script type="text/javascript" src="http://test1.ru/inc.php"></script><!-- Здесь выводится значение переменной $a, тобиж на экране монитора мы увидем "Это текст из подключаемого файла другого домена" -->
</body>
</html>

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru