|
|
|
| В начале страницы устанавливаем РНР код, позволяющий определить ее имя:
$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
Но не работает! Выводится только test.
Здесь я сделал что-то неверно или это в принципе невозможно?
Может быть, надо переменную $str в сессию разместить?
============
В .htaccess стоит
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .js
|
| |
|
|
|
|
|
|
|
для: Владимир55
(29.01.2014 в 16:26)
| | зачем вообще вам нужен этот $_SERVER['PHP_SELF']? вы хотите нужный пункт меню с помощью его подсветить?
поробуйте вот так:
$('#left_menu_spisok').load('/my-files/left_menu_spisok.php', {str: 'test<?php echo $str; ?>'});
|
| |
|
|
|
|
|
|
|
для: psychomc
(29.01.2014 в 16:34)
| | Да, хотел подсветить меню.
Однако, Ваша версия тоже не работает, причем не выводится даже слово test | |
|
|
|
|
|
|
|
для: Владимир55
(29.01.2014 в 16:48)
| | посмотрите js дебаг консоль на наличие ошибок. чтобы подсветить нужный пункт не надо никаких $_SERVER['PHP_SELF'] и т.п. вместо него просто пишите например $str = 'имя нужной страницы'; и уже в скрипте с меню проверяете это имя.
а чем вызвана необходимость подгрузки меню через javascript?
*$(document).ready оставьте как и был | |
|
|
|
|
|
|
|
для: psychomc
(29.01.2014 в 16:57)
| | Чтобы вес страницы не растекался бесполезно по меню.
Вручную прописывать имена страниц можно, но не хотелось бы - в последствии можно случайно пропустить эту операцию.
Если так не идет, то сделаем через сессии - там уж точно будет работать.
Спасибо! | |
|
|
|
|
|
|
|
для: Владимир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
|
Непонятно только, какой РНР функцией можно его првести в обычный вид... | |
|
|
|
|
|
|
|
для: Владимир55
(29.01.2014 в 17:36)
| | urldecode
это не совсем правильный подход, параметры лучше передавать отдельно. посмотрите последний пример в документации http://api.jquery.com/load/
и еще совет: left_menu_spisok лучше не писать, лучше left_menu_list и тп. | |
|
|
|
|
|
|
|
для: Владимир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 лучше. | |
|
|
|