Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Календарь и Ajax
 
 автор: VL   (24.05.2010 в 08:32)   письмо автору
 
 

У меня был календарь, выводил текущий месяц, решил сделать листание вправо и влево по месяцам с jquery.
Но реализовал только +1 вперед и -1 назад месяца.Допустим если сейчас май
То будет выводиться Апрель и Июнь. Мне требуется чтобы и дальше листался. Нужен счетчик но вот додумать не могу .
Файл index

<? header("Content-Type: text/html;charset=windows-1251"); ?>
<html>
<head>
<title>Ajax</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">    
$(document).ready(function(){ 
    



     
  // --------------  
  $("#a1").click(
 
    function () {  
   $.ajax({
    
    url: "ajax_calendar.php?mode=prev",
    cache: false,
    success: function(html){
  
    
    $("#next").hide(); 
    $("#message").hide();
    $("#results").append(html);
  }
  
});  
    }); 


  $("#a2").click(  
            function () {  
           $.ajax({
            url: "ajax_calendar.php?mode=next",
            cache: false,
            success: function(html){
            $("#prev").hide(); 
            $("#message").hide(); 
            $("#results").append(html);
            
          }
          
    
   
        });  
            });
  // --------------  
  $("#loading").ajaxStart(function(){  
   $(this).show();  
   
  }); 
  
  $("#loading").ajaxStop(function(){  
   $(this).hide();  
  });  
  
 
});  
</script>
<style>
#loading {
  display:none;
  padding-left:10px;
}

#results {
padding: 6px 6px 6px;
width: 340px;
}
</style>
</head>
<body>
<a href="#" id="a1">
ВЛЕВО
</a>
<br></br>
<a href="#" id="a2">
ВПРАВО
</a>
<span id="loading"><img src="loader.gif"><br></span>
<span id="results"></span>


<link rel="stylesheet" type="text/css" href="calendar_simple.css" />

<?php
include('calendar.class.php');
$c = new Calendar();
$c->setCssPrefix('simple_');
$c->lng 'ru';

echo 
'<span id="message">';
echo 
$c->genUMonth(time(), true);
echo 
'</span>';

?>
</body>
</html>


И файл ajax_calendar.php

<?php


$act 
$_REQUEST['mode'];
include(
'calendar.class.php');
$c = new Calendar();
$c->setCssPrefix('simple_');
$c->lng 'ru';


if (
$act == "next") {



echo 
'<span id="next">';
echo 
$c->genUMonth(mktime(0,0,0,date("m")+1,1,date("Y")), true);
echo 
'</span>';

}
if (
$act == "prev") {

echo 
'<span id="prev">';
echo 
$c->genUMonth(mktime(0,0,0,date("m")-1,1,date("Y")), true);
echo 
'</span>';

}
?>

  Ответить  
 
 автор: sim5   (24.05.2010 в 08:56)   письмо автору
 
   для: VL   (24.05.2010 в 08:32)
 

Вопрос - а зачем для того чтобы узнать дату делать запрос на сервер? Календарь можно построить на чистом JS, в JS есть объект Date. Да и готовых скриптов "листающих" календарей предостаточно, если не понимаете сами как.

  Ответить  
 
 автор: VL   (24.05.2010 в 09:03)   письмо автору
 
   для: sim5   (24.05.2010 в 08:56)
 

Функция которая генерирует календарь ,она еще и делает дни ссылками на документы обращаясь к БД, а так бы с радостью взял бы готовый календарь.

  Ответить  
 
 автор: sim5   (24.05.2010 в 09:09)   письмо автору
 
   для: VL   (24.05.2010 в 09:03)
 

Для того, чтобы сделать дни ссылками, не обязательно формировать календарь на сервере, если уж Ajax под рукою. Хотя, если хотите, то добавьте кнопкам навигации календаря даты как плюс год/месяц и минус год/месяц от запрошенной (текущей), тогда будете получать на сервере запрашиваемый год/месяц календаря

  Ответить  
 
 автор: VL   (24.05.2010 в 09:33)   письмо автору
 
   для: sim5   (24.05.2010 в 09:09)
 

Ну я хотел сделать счетчик , сколько раз щелкнул пользователь, но в JS как то не получилось манипулорать данными.

Можно небольшой пример как реализовать и передать потом параметр
сюда

url: "ajax_calendar.php?mode=prev", 

  Ответить  
 
 автор: sim5   (24.05.2010 в 09:49)   письмо автору
 
   для: VL   (24.05.2010 в 09:33)
 

Зачем вам счетчик?
У вас календарь обязательно содержит две кнопки - назад (prev к примеру) и вперед (next).
Изначально, если нет запроса по этим кнопкам, то им присваивается даты как минус и плюс от текущего месяца, иначе от минус и плюс от запрашиваемой даты. То есть:
<?
//если есть запрос от клиента, то получаем запрашиваемый месяц,
//иначе текущий
//где $_GET['navi'], это дата от кнопки вперед или назад
//выберите формат даты удобный для преобразования и запросов
$date = isset($_GET['navi']) ? $_GET['navi'] : date('Y-m');
//выдаем календарь на месяц $date
//и указываем даты кнопкам навигации
?>
<input type="button" name="prev" value="<?php echo $date месяц?>">
<input type="button" name="next" value="<?php echo $date месяц?>">

  Ответить  
 
 автор: VL   (24.05.2010 в 10:00)   письмо автору
 
   для: sim5   (24.05.2010 в 09:49)
 

Хм. мы будет применять метод GET.
Но ведь я хочу все сделать это без перезагрузки главной страницы моего сайта,чтобы делать это без перезагрузки страницы пользователя.

  Ответить  
 
 автор: sim5   (24.05.2010 в 10:04)   письмо автору
 
   для: VL   (24.05.2010 в 10:00)
 

Ajax, это в любом случае запрос, jQuery может отправлять их любым методом (POST, GET), как у вас это я не знаю (не вникал в код ваш), так что, думаю, заменить на нужное вы сможете. Суть не в методе.

  Ответить  
 
 автор: VL   (24.05.2010 в 10:13)   письмо автору
 
   для: sim5   (24.05.2010 в 10:04)
 

Понял спасибо. Последний вопрос тогда . Если я буду посылать методом GET
то как в строку
url: "ajax_calendar.php?mode=prev&date=значение"

передать значение .

  Ответить  
 
 автор: sim5   (24.05.2010 в 10:22)   письмо автору
 
   для: VL   (24.05.2010 в 10:13)
 

В jQuery есть масса методов работы с объектами элементов формы, причем они очень простые. Да и вообще, jQuery за вас очень многое делает. Мой совет, загляните в описание методов jQuery, уверен, что вы поймете без труда сами как это сделать, да и это намного полезнее для вас. Написанное мной покажет как, но пользы вам не принесет, ибо кроме этого, думаю, у вас появятся и другие вопросы, а понимание вами поможет их решить.
Могу лишь заметить по поводу url (кстати, не обязательно кнопка должна иметь его, почитайте о методах ajax в jQuery) - достаточно будет одного из параметров из вашей строки запроса (date лучше подойдет, по смыслу, ибо он и будет предавать ее), чтобы на сервере определить, что нужно выводить календарь не текущей даты, а запрашиваемой.

  Ответить  
 
 автор: AlexSol   (24.05.2010 в 12:19)   письмо автору
 
   для: VL   (24.05.2010 в 10:13)
 

 $.get("test.cgi", { name: "John", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования