Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как передать РНР скрипту имя страницы, вызвавшей процесс?
 
 автор: Владимир55   (29.01.2014 в 16:26)   письмо автору
 
 

В начале страницы устанавливаем РНР код, позволяющий определить ее имя:
 $str = $_SERVER['PHP_SELF']; 


Далее производим вывод через АЯКС:
<script src="/my-js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="/my-js/left_menu.js">
</script><div id="left_menu_spisok"></div> <!-- Левое меню --> 


Соответственно, в скрипте left_menu.js пишем:
 $(document).ready(function() {
$('#left_menu_spisok').load('/my-files/left_menu_spisok.php?str=test<?php echo $str?>'); 
}); 


А в самом файле left_menu_spisok.php формируется HTML код, который и выводится на страницу.

Проблема в том, что формируемый код разный для разных страниц. Для беспечения этого помещаем в файле left_menu_spisok.php
echo $_GET['str']; 


Но не работает! Выводится только test.

Здесь я сделал что-то неверно или это в принципе невозможно?

Может быть, надо переменную $str в сессию разместить?

============
В .htaccess стоит
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .js 

  Ответить  
 
 автор: psychomc   (29.01.2014 в 16:34)   письмо автору
 
   для: Владимир55   (29.01.2014 в 16:26)
 

зачем вообще вам нужен этот $_SERVER['PHP_SELF']? вы хотите нужный пункт меню с помощью его подсветить?

поробуйте вот так:

$('#left_menu_spisok').load('/my-files/left_menu_spisok.php', {str: 'test<?php echo $str?>'});

  Ответить  
 
 автор: Владимир55   (29.01.2014 в 16:48)   письмо автору
 
   для: psychomc   (29.01.2014 в 16:34)
 

Да, хотел подсветить меню.

Однако, Ваша версия тоже не работает, причем не выводится даже слово test

  Ответить  
 
 автор: psychomc   (29.01.2014 в 16:57)   письмо автору
 
   для: Владимир55   (29.01.2014 в 16:48)
 

посмотрите js дебаг консоль на наличие ошибок. чтобы подсветить нужный пункт не надо никаких $_SERVER['PHP_SELF'] и т.п. вместо него просто пишите например $str = 'имя нужной страницы'; и уже в скрипте с меню проверяете это имя.
а чем вызвана необходимость подгрузки меню через javascript?
*$(document).ready оставьте как и был

  Ответить  
 
 автор: Владимир55   (29.01.2014 в 17:19)   письмо автору
 
   для: psychomc   (29.01.2014 в 16:57)
 

Чтобы вес страницы не растекался бесполезно по меню.

Вручную прописывать имена страниц можно, но не хотелось бы - в последствии можно случайно пропустить эту операцию.

Если так не идет, то сделаем через сессии - там уж точно будет работать.

Спасибо!

  Ответить  
 
 автор: Владимир55   (29.01.2014 в 17:36)   письмо автору
 
   для: Владимир55   (29.01.2014 в 17:19)
 

Кстати, решить проблему можно еще и так:
$(function() {    $('#left_menu_spisok').load('/my-files/left_menu_spisok.php?url=' + encodeURIComponent(location.href));});


Проблема лишь в том, что ответ имеет вид
http%3A%2F%2Fsite%2Fnew1.html 


Непонятно только, какой РНР функцией можно его првести в обычный вид...

  Ответить  
 
 автор: psychomc   (29.01.2014 в 17:46)   письмо автору
 
   для: Владимир55   (29.01.2014 в 17:36)
 

urldecode
это не совсем правильный подход, параметры лучше передавать отдельно. посмотрите последний пример в документации http://api.jquery.com/load/
и еще совет: left_menu_spisok лучше не писать, лучше left_menu_list и тп.

  Ответить  
 
 автор: Лена   (30.01.2014 в 01:20)   письмо автору
 
   для: Владимир55   (29.01.2014 в 16:26)
 

У вас с самого начала был неправильный подход.
Вы в файл left_menu.js, который отрабатывает в броузере и ничего не знает про php, запихнули php-код.
Можно было бы весь код пустить в php и назвать файл left_menu.php:

$str = $_SERVER['PHP_SELF'];
print "\$(document).ready(function() {
\$('#left_menu_spisok').load('/my-files/left_menu_spisok.php?str=test" . $str . "'); 
})";


Я такое уже в готовом коде встречала, но это неправильно. Сервер не должен заниматься делами броузера. Это просто на худой случай еще один вариант. С location.href лучше.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования