Люди добрые, помогите решить проблему.
Есть файл index.php с примерным кодом:
Код |
<?php include_once('includes/main.php'); ?> <html> ... ... <body> .... .... .... <div id="content"><?=$content?></div> .... .... </html>
|
Соответственно основные переменные передаются со ссылкой вида index.php?act=xxx&sub_id=xxx&lang=xxx&letter=x
В файле main.php идут вычисления, и в зависимости от "act" линкуется тот или иной файл, который и генерирует значение $content которое и является основным наполнением страницы. Теперь встала задача делать обновление содержимого <div id="content"><?=$content?></div> без перезагрузки всей страницы.
Например добавляю в заголовок код вида
Код |
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript">
$(document).ready(function(){ $("#content").load("test.php"); }); </script> |
и дальше кладу файлик test.php в котором
Код |
<?php
include_once('includes/main.php'); echo $content; ?> |
Естественно, что переменные из строчки index.
php?act=xxx&sub_id=xxx&lang=xxx&letter=x не передаются, и при любом раскладе получаю одну и туже картинку.
Вопрос: как сделать обновление части " <div id="content"><?=$content?></div>"?
Спустя 16 минут, 29 секунд (17.09.2009 - 15:29) glock18 написал(а):
Psi
Цитата |
Естественно, что переменные из строчки index.php?act=xxx&sub_id=xxx&lang=xxx&letter=x не передаются, и при любом раскладе получаю одну и туже картинку. |
Спустя 7 минут, 32 секунды (17.09.2009 - 15:37) Psi написал(а):
glock18
Я совсем не силён в Javascript. Как мне в коде
Код |
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript">
$(document).ready(function(){ $("#content").load("test.php"); }); </script> |
получить переменные из строчки index.
php?act=xxx&sub_id=xxx&lang=xxx&letter=x и послать их в test.
php?
Спустя 4 минуты, 37 секунд (17.09.2009 - 15:41) glock18 написал(а):
получить, если не ошибаюсь, можно в объекте window.location - свойство href.
как отправить - смотри ссылку. я даже позаботился дал ссылку на примеры, а то ведь лень будет тебе самому искать.
Спустя 27 минут, 20 секунд (17.09.2009 - 16:09) Psi написал(а):
Эх, осталось только за день выучить JavaScript.
Сделал следующий трюк.
Код |
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> x = window.location.pathname; y = "test.php"; tpath = y+x;
$(document).ready(function(){ $("#content").load(tpath); }); |
Судя по тому, что в <?=$content?> выводится всегда одно и тоже, он не сработал. Куда дальше рыть? Еще раз - с JavaScript только сегодня впервые имею дело.
Спустя 1 час, 21 минута, 19 секунд (17.09.2009 - 17:30) Psi написал(а):
кстати еще такая вещь, что параметры то я например смогу передать, которые в строке, а как быть с теми, которые передаются в форме как скрытые?
Спустя 1 час, 5 минут, 25 секунд (17.09.2009 - 18:35) Гость_hara написал(а):
ну как вам сказать
вы напишите в коде alert(window.location.pathname) и посмотрите на результат
это я к тому что у вас в переменной x содержится
а по поводу скрытых полей уже пора бы ссылку которую glock18 дал прочитать,
- как говориться: время пришло
и да, для этого не нужно учить javascript
Спустя 15 минут, 22 секунды (17.09.2009 - 18:51) twin написал(а):
Цитата |
и да, для этого не нужно учить javascript |

или зря смеюсь?
Спустя 20 минут, 6 секунд (17.09.2009 - 19:11) Гость_hara написал(а):
тс.. я хотел незаметно обмануть автора топика и он бы всё сделал сам и не заметил подвоха
а ты... эх ты...
Спустя 8 минут, 37 секунд (17.09.2009 - 19:19) glock18 написал(а):
да считай не зря. на jquery можно кое-что делать, не особо понимая в жс. конечно, серьезное ничего не напишешь, но ТС и не надо ничего серьезного.
Спустя 2 минуты, 35 секунд (17.09.2009 - 19:22) Michael написал(а):
Цитата (glock18 @ 17.09.2009 - 16:19) |
да считай не зря. на jquery можно кое-что делать, не особо понимая в жс. конечно, серьезное ничего не напишешь, но ТС и не надо ничего серьезного. |
А кто такой ТС? А то на форумах в архивах встречаю и одни только предположения.
Спустя 1 минута, 45 секунд (17.09.2009 - 19:24) Guest написал(а):
Спустя 56 минут, 59 секунд (17.09.2009 - 20:21) Psi написал(а):
Ладно, разобрался по поводу ссылки. С ней всё равно не работает.
Итак. Имеем index.php
Код |
<?php include_once('includes/main.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>ZZZ</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="styles/main.css" /> <link rel="stylesheet" type="text/css" href="styles/style.css" /> <link rel="stylesheet" type="text/css" href="styles/green.css" />
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> x = window.location.search; y = "test.php"; tpath = y+x; $(document).ready(function(){ $("#content").load(tpath); }); </script>
</head> <body> <div id="main"> <div id="links_container"> <div id="logo"><h1>ZZZ</h1><h2>xxx</h2></div> <div id="links"> </div> </div> <div id="menu"> <ul> <?=$submenu?> </ul> </div> <div id="alphabet"> <ul> <?=$alphabet?> </ul> </div> <div id="content"> <div id="column2"> <?=$content?> </div> <div id="footer"> </div> </div> </body> </html>
|
и main.php вида
PHP |
<?php include_once('mysql.inc.php'); include_once('includes/header.inc.php'); include('includes/conf.inc.php');
$db = new mysql($conf['mysql']['host'], $conf['mysql']['user'], $conf['mysql']['pass'], $conf['mysql']['db'], $persistency = true); $sql = "SET CHARACTER SET 'utf8'"; $sql1 = "SET collation_connection = 'utf8_general_ci'"; $db->sql_query($sql); $db->sql_query($sql1);
if(!$db->db_connect_id) { message_die(CRITICAL_ERROR, "Could not connect to the database"); }
$act = $_GET['act']; $sub = $_GET['sub']; $id = $_GET['id']; $clid = $_GET['clid']; $rid = $_GET['rid']; $sub_id = $_GET['sub_id']; $m = $_GET['m']; $vsub = $_POST['vsub']; $vsub_id = $vsub; $cvsub = $_GET['cvsub']; $letter = $_GET['letter']; $menu_lang['use_lang'] = 'eng'; $use_lang = 'eng'; $charset = "UTF-8"; $keywords = $keywords['eng']; $act = "clients";
if ($act <> 'clients' ){ $act = "clients"; }
if (!ISSET($sub_id)){ if ($act == "clients") { $sub_id = "cli_all"; } }
if (!ISSET($letter)){ $letter = "all"; }
if ($sub_id <> 'calc' AND $sub_id <> 'stats' AND $sub_id <> 'h_edit' AND $sub_id <> 'cli_view' AND $sub_id <> 'cli_new' AND $sub_id <> 'cli_edit' AND $sub_id <> 'cli_all' AND $sub_id <>'' AND $sub_id <> 'com_edit'){ $act = "clients"; $sub_id = "cli_all"; }
if ($use_lang <> 'eng'){ $use_lang = "eng"; }
if ($menu_lang['use_lang'] <> 'eng'){ $menu_lang['use_lang'] = "eng"; }
include_once('submenu.inc.php'); include_once('alphabet.inc.php'); if ($_GET['sub_id'] <> "cli_all" AND $_GET['sub_id'] <> ""){ $alphabet = ""; } |
и test.php
PHP |
<?php include_once('includes/main.php'); echo $content; |
На данный момент $content формируется в файле clients.inc.php который присоединяется в submenu.inc.php
Может всё таки кто-то подскажет в какую сторону рыть, чтоб в index.php переменная $content обновлялась каждые скажем 5 секунд, или хотя бы корректно показывалась?
Спустя 3 минуты, 45 секунд (17.09.2009 - 20:24) Гость_hara написал(а):
мне показалось или в main.php нет ни одной переменной $content ?
Спустя 5 минут, 52 секунды (17.09.2009 - 20:30) Guest написал(а):
а у вас кстати тег <div id="main"> не закрыт..
Спустя 6 минут, 43 секунды (17.09.2009 - 20:37) Psi написал(а):
Гость_hara
Нет переменной, но есть include_once('submenu.inc.php'); где в зависимости от нажатой кнопки в менюшке добавляется тот или иной файл, например clients.inc.php
<div> в примере не закрыт, так как удалял ненужный footer чтоб уменьшить код, зацепило.
Еще такая вещь, что в файлах данные передаются в виде
HTML |
<form method="post" target=_self action="?act=clients&sub_id=h_edit&cvsub=update" enctype="multipart/form-data"> <tr> <td><input type="text" name="rcontent" size="30" value="'.$row[1].'"></input>
</tr> <tr> <td> <input type="hidden" name="rid" value="'.$rid.'"> <input type="submit" value="'.$menu_lang['eng']['admin']['cli_update'].'"> </td> </tr> </form>
|
Так что, переписывать всё?