LINUX.ORG.RU

Обновление части страницы


0

0

Народ. Нужна помощь. Голова уже пухнет, так как не могу найти решение несколько дней. Обгуглися весь. Собственно проблема: есть index.php который выводит странички. Делаются вставки в хтмл вида <div id="content"><?=$content?></div> Вот нужно обновлять один такой <div> без обновления всей страницы. Использовал бы готовый пример на AJAX но проблема в том, что у меня все данные передаются в виде ?act=clients&sub_id=cli_all и заодно формы отсылают еще поля вида hidden То есть всё приходит в этот же index.php а все примеры с AJAX подразумевают вызов стороннего скрипта php Вопрос - как реализовать в таких условия обновления <div> с периодичностью скажем 5 секунд?

★★★★★

> все примеры с AJAX подразумевают вызов стороннего скрипта php

С чего это? Тебе религия не позволяет какой-нибудь флаг передать, что это AJAX-запрос?

boombick ★★★★★
()
Ответ на: комментарий от boombick

Я наверное неправильно выразился. Во всех примерах, которые я нашел, а за 3-4 дня гугленья я нашел много примеров, был вызов вида load("какой-нибудь файл") Это конечно хорошо, но как быть, когда у меня все через один файл index.php? Вызывать самого себя? Там такая каша получается...

Mr_Alone ★★★★★
() автор топика
Ответ на: комментарий от Mr_Alone

> Я наверное неправильно выразился. Во всех примерах, которые я нашел, а за 3-4 дня гугленья я нашел много примеров, был вызов вида load("какой-нибудь файл") Это конечно хорошо, но как быть, когда у меня все через один файл index.php? Вызывать самого себя? Там такая каша получается...

load("/index.php?action=fill_this_fucking_div") ?

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

В 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"> ---- <?=$submenu?> ---- </html>

А в main.php идут собственно обработки и линкуются другие файлы, в зависимости от нажатой кнопки, где собственно и готовится $submenu

Mr_Alone ★★★★★
() автор топика
Ответ на: комментарий от Mr_Alone

load(«/index.php?action=fill_this_fucking_div») ?

в index.php

if ('fill_this_fucking_div'==$_GET['action']){
  fill_this_funcking_div();
  //goto end; =)
  exit();
}
//код дальше
Да криво, да тупо, но нужный эффект будет :)

qnikst ★★★★★
()
Ответ на: комментарий от Mr_Alone

> В 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"> ---- <?=$submenu?> ---- </html>


> А в main.php идут собственно обработки и линкуются другие файлы, в зависимости от нажатой кнопки, где собственно и готовится $submenu


сделаем вид, что этого никто не видел. Используй MVC фреймвоки.

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

>сделаем вид, что этого никто не видел. Используй MVC фреймвоки.

MVC позволит мне обновлять <div> без перезагрузки страницы?

Mr_Alone ★★★★★
() автор топика
Ответ на: комментарий от qnikst

>Да криво, да тупо, но нужный эффект будет :)

Если таким макаром ссылаться на файл, куда уже выводится готовый код, то ничего хорошего не получается. Там только код вида:
<?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" />

</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>

Mr_Alone ★★★★★
() автор топика
Ответ на: комментарий от Mr_Alone

> MVC позволит мне обновлять <div> без перезагрузки страницы?

MVC заставляет писать более или менее осмысленную логику.

xpahos ★★★★★
()
Ответ на: комментарий от xpahos

Что не устраивает? Берем WordPress: index.php <?php / define('WP_USE_THEMES', true); require('./wp-blog-header.php'); ?>

wp-blog-header.php <?php if ( !isset($wp_did_header) ) { $wp_did_header = true; require_once( dirname(__FILE__) . '/wp-load.php' ); wp(); require_once( ABSPATH . WPINC . '/template-loader.php' ); } ?>

и т.д. по две строчки в файле и так во многих проектах. Где логика, Мань?

ЗЫ. По теме сказать нечего, да? Так, поумничать заглянул?

Mr_Alone ★★★★★
() автор топика
Ответ на: комментарий от Mr_Alone

> Это конечно хорошо, но как быть, когда у меня все через один файл index.php?

К.О. просил передать: добавь файл fill_div.php.

provaton ★★★★★
()
Ответ на: комментарий от provaton

>К.О. просил передать: добавь файл fill_div.php.

А что туда передать? То есть у меня все ссылки идут вида index.php?a=b&c=d&e=f&g=h плюс передаются параметры вида <input type="hidden" name="vsub" value="update">

Значит файл fill_div.php должен принимать все переменные из index.php каким-то образом, ибо файл с
<?php include_once('includes/main.php'); echo $content; ?>
не работает, хоть и скармливаю переменные из index.php
"<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>

Непонятным образом работают только две ссылки:
?act=clients&sub_id=stats&lang=eng
?act=clients&sub_id=cli_all&lang=eng
остальные не работают:
?act=clients&sub_id=cli_new&lang=eng
?act=clients&sub_id=cli_edit&lang=eng
?act=clients&sub_id=calc&lang=eng

Mr_Alone ★★★★★
() автор топика

Похоже, каша не только в коде, но и в голове ТС.
qnikst уже дал тебе самый просто реализуемый в твоём случае пример. Ставишь этот if, если всё как обычно, то отдаётся обычная страница, если есть флаг, то отдаётся голый текст, который ты принимаешь на клиенте и жабаскриптом суешь в нужный div.

SOmni ★★
()
Ответ на: комментарий от Mr_Alone

> ЗЫ. По теме сказать нечего, да? Так, поумничать заглянул?

Мыши кололись, плакали, но продолжали кушать кактус :)

xpahos ★★★★★
()
Ответ на: комментарий от qnikst

>Да криво, да тупо, но нужный эффект будет :)

Криво-тупо не заработает. Почему? Посмотри сам.

Mr_Alone ★★★★★
() автор топика
Ответ на: комментарий от SOmni

>Похоже, каша не только в коде, но и в голове ТС.

Каша похоже у тебя в голове. Иначе чисто ради прикола ты мог бы проверить, что приведённый кусок кода не заработает.

Mr_Alone ★★★★★
() автор топика

Народ, можно дальше не помогать. Сам разберусь.

Mr_Alone ★★★★★
() автор топика
Ответ на: комментарий от Mr_Alone

Мы с вами на брудершафт не пили вроде как..

boombick ★★★★★
()
Ответ на: комментарий от Mr_Alone

Так побудем интерпретатором.
load("/index.php?action=fill_this_fucking_div") ?
на страницу index.php приходит гет запрос:
$_GET['action']='fill_this_fucking_div')

if ('fill_this_fucking_div'==$_GET['action']){ //здесь у нас получается true
fill_this_funcking_div();//мы выполняем твою функцию заполняющую div
//goto end; =)
exit();//скрипт завершается
}
//тут идёт твой код, который рисует обычную страницу в случае если нет запроса.


Где я тут не прав? =)

qnikst ★★★★★
()

render :partial => "some_div_content", :layout => false

А пхпшники как всегда лососнули тунца.

future-of-the-lor
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.