переключение страниц без перезагрузки
Добрый день
есть проблема.. сделал гостевую на аяксе.. все нормально выводится.. но не могу сделать переключение страниц в гостевой книге без перезагрузки страницы index.php
<script src="jquery-1.9.1.min.js"></script>
</head>
<?php
$set['title']='Гостевая книга '; // заголовок страницы
?>
<!-- код формы -->
<form id="myForm" action="site/action" onsubmit="clearForm(this); return true;">
Сообщение:
<textarea id="msg" cols="36" rows="4" style="width:90%;" ></textarea>
</br></br>
<input type="submit" value="Отправить сообщение">
</form>
<div id="messages">
</div>
<script>
function splash()
{
if (document.myForm.msg.value =='')
{
alert ("Заполните текст сообщения!");
return false;
}
return true;
}
// загрузка сообщений из БД в контейнер messages
function show_messages()
{
$.ajax({
url: "show.php",
data: "&page=<?=intval($_GET['page'])?>",
cache: false,
success: function(html){
$("#messages").html(html);
}
});
}
function clearForm(f) {
window.setTimeout(function() {
f.elements.msg.value='';
}, 100);
}
$(document).ready(function(){
show_messages();
// контроль и отправка данных на сервер в фоновом режиме при нажатии на кнопку "отправить сообщение"
$("#myForm").submit(function(){
var msg = $("#msg").val();
if (msg =='')
{
alert ("Заполните текст сообщения!");
return false;
}
$.ajax({
type: "POST",
url: "action.php",
data: "msg="+msg+"&action=add",
success: function(msg){
show_messages();
}
});
return false;
});
show_messages();
setInterval("show_messages()", 10000);
var flagGoIn = true;
$('#myForm')
.off('keydown')
.on('keydown', function(event){
if (event.keyCode == 17) {
$('#myForm').on('keydown', function(event){
var msg = $("#msg").val();
if (event.keyCode == 13 && flagGoIn) {
if (msg =='')
{
alert ("Заполните текст сообщения!");
return false;
}
$.ajax({
type: "POST",
url: "action.php",
data: "msg="+msg+"&action=add",
success: function(msg){
show_messages();
clearForm();
}
});
$('#msg').val('');
//$('#myForm').off('keydown');
flagGoIn = false;
}
})
.keyup(function(event){
flagGoIn = true;
});
}
});
});
</script>
</body>
</html>
action.php
// получаем переменные из формы
//$username=$_REQUEST['username'];
$msg=$_REQUEST['msg'];
$action=$_REQUEST['action'];
$msg=esc(mysql_real_escape_string(stripcslashes(htmlspecialchars($_REQUEST['msg']))));
if ($action=="add")
{
// добавление данных в БД
$sql="INSERT INTO `us_guest` (id_user,id_user_**, time, msg) values('$us[id]', '0', '$time', '$msg')";
$r=mysql_query ($sql);
}
?>
show.php
$k_post=mysql_result(mysql_query("SELECT COUNT(*) FROM `us_guest` WHERE `id_user_**` = 0"),0);
$k_page=k_page($k_post,$set['p_str']);
if ($page!="end")
{
$page=$_REQUEST['page'];
}
if ($page=="end")
{
$page=$k_page;
}
$start=$set['p_str']*$page-$set['p_str'];
if ($k_post==0)
{
echo "Нет сообщений<br/>\n";
}
$r=mysql_query("SELECT * FROM `us_guest` WHERE `id_user_**` = 0 ORDER BY id DESC LIMIT $start, $set[p_str] ");// выбор всех записей из БД, отсортированных так, что самая последняя отправленная запись будет всегда первой.
while ($post=mysql_fetch_array($r)) // для каждой записи организуем вывод.
{
......
}
echo'<a href="?page=2">Следующая страница</a><br/>';
Мне нужно чтобы при нажатии на ссылку "Следующая страница" .. страница менялась динамически без перезагрузки страницы.. подскажите пожалуйста как это можно сделать ? |
Вот это забыл наверное
$("#myForm").ajaxForm(function() { }); |
строки 105...115 нужно убрать и задать как раз вот для ajaxForm
|
в твоем случае будет что то типа
$("#myForm").ajaxForm({
type: "POST",
url: "action.php",
data: "msg="+msg+"&action=add",
success: function(msg){ show_messages();
clearForm();
}
type, post можно не указывать и прописать в самой форме |
Цитата:
echo'<a href="?page=2">Следующая страница</a><br/>'; мне нужно переключать страницы без перезагрузки страницы.. то есть чтобы в файле show.php менялась переменная $page сразу после нажатия ссылки |
чет не совсем понятный show.php, тут курить его надо...
это ято такое data: "&page=<?=intval($_GET['page'])?>", |
Цитата:
как сделать так чтобы переключались страницы без перезагрузки страницы.. чтобы в файле show.php менялась переменная $page сразу после нажатия ссылки.. ? |
у тебя на одной странице по одному сообщению?
|
по идее номер текущей страницы должен вычисляться в самом show.php и уже передаваться клиенту как факт, где гарантия что страница вообще должна переключиться
|
мы вот тут пишем до сих пор на первой стрице
|
Цитата:
но а если юзер переключает страницу ? нажимает на ссылку "Следующая страница" ? впинципе это ерунда.. с эти разберусь мне главное понять как менять страницу без перезагрузки |
мм если я правильно понял попробуй так
добавь id для простоты, и сделай якорь а не параметр к php <a id="next_page" href="#page=2">Следующая страница</a> потом привяжи событие клика
$("#next_page").live("click",function({
var num_page = $(this).attr('href').substr(7);
show_messages(num_page);
}));
как то так :) |
Цитата:
|
нашел вот такую функцию
function jQuery_pager($rpp, $count, $href, $opts = array(),$jQuery) {
$pages = ceil($count / $rpp);
if (!isset($opts['lastpagedefault']))
$pagedefault = 0;
else {
$pagedefault = floor(($count - 1) / $rpp);
if ($pagedefault < 0)
$pagedefault = 0;
}
if (isset($_GET['page'])) {
$page = 0 + (int) $_GET['page'];
if ($page < 0)
$page = $pagedefault;
}
else
$page = $pagedefault;
$pager = "<td class=\"pager\">Страницы:</td><td class=\"pagebr\"> </td>";
$pager2 = "";
$bregs = "";
$mp = $pages - 1;
$as = "<b>«</b>";
if ($page >= 1) {
$onClick_prew = 'onclick="SE_Pager(\''.(int)$_GET['id'].'\',\''.($page - 1).'\',\''.$jQuery.'\');return false;"';
$pager .= "<td class=\"pager\">";
$pager .= "<a ".$onClick_prew." style=\"text-decoration: none;cursor:pointer;\">$as</a>";
$pager .= "</td><td class=\"pagebr\"> </td>";
}
$as = "<b>»</b>";
if ($page < $mp && $mp >= 0) {
$onClick_next = 'onclick="SE_Pager(\''.(int)$_GET['id'].'\',\''.($page + 1).'\',\''.$jQuery.'\');return false;"';
$pager2 .= "<td class=\"pager\">";
$pager2 .= "<a ".$onClick_next." style=\"text-decoration: none;cursor:pointer;\">$as</a>";
$pager2 .= "</td>$bregs";
} else
$pager2 .= $bregs;
if ($count) {
$pagerarr = array();
$dotted = 0;
$dotspace = 3;
$dotend = $pages - $dotspace;
$curdotend = $page - $dotspace;
$curdotstart = $page + $dotspace;
for ($i = 0; $i < $pages; $i++) {
if (($i >= $dotspace && $i <= $curdotend) || ($i >= $curdotstart && $i < $dotend)) {
if (!$dotted)
$pagerarr[] = "<td class=\"pager\">...</td><td class=\"pagebr\"> </td>";
$dotted = 1;
continue;
}
$dotted = 0;
$start = $i * $rpp + 1;
$end = $start + $rpp - 1;
if ($end > $count)
$end = $count;
$text = $i+1;
if ($i != $page){
$onClick = 'onclick="SE_Pager(\''.(int)$_GET['id'].'\',\''.$i.'\',\''.$jQuery.'\');return false;"';
$pagerarr[] = "<td class=\"pager\"><a ".$onClick." title=\"$start - $end\" style=\"text-decoration: none;cursor:pointer;\"><b>$text</b></a></td><td class=\"pagebr\"> </td>";
}else{
$pagerarr[] = "<td class=\"highlight\"><b>$text</b></td><td class=\"pagebr\"> </td>";
}
}
$pagerstr = join("", $pagerarr);
$pagertop = "<table class=\"main\"><tr>$pager $pagerstr $pager2</tr></table>\n";
$pagerbottom = "Всего $count на $i страницах по $rpp на каждой странице.<br /><br /><table class=\"main\">$pager $pagerstr $pager2</table>\n";
}
else {
$pagertop = $pager;
$pagerbottom = $pagertop;
}
$start = $page * $rpp;
return array($pagertop, $pagerbottom, "LIMIT $start,$rpp");
}
она для другого движка кто-то понимает как ее можно прикрутить ? |
| Часовой пояс GMT +3, время: 11:25. |