[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: AJAX + index.php
Psi
Люди добрые, помогите решить проблему.
Есть файл 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 не передаются, и при любом раскладе получаю одну и туже картинку.


вот исходя из этого, думаю, что тебе это:
http://docs.jquery.com/Ajax/jQuery.ajax#examples


Спустя 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? unsure.gif

Спустя 4 минуты, 37 секунд (17.09.2009 - 15:41) glock18 написал(а):
получить, если не ошибаюсь, можно в объекте window.location - свойство href.

как отправить - смотри ссылку. я даже позаботился дал ссылку на примеры, а то ведь лень будет тебе самому искать.

Спустя 27 минут, 20 секунд (17.09.2009 - 16:09) Psi написал(а):
Эх, осталось только за день выучить JavaScript. smile.gif

Сделал следующий трюк.
Код
<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

biggrin.gif или зря смеюсь?

Спустя 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>


Так что, переписывать всё? ph34r.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.