Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.06.2016, 18:08
Интересующийся
Отправить личное сообщение для nina_ Посмотреть профиль Найти все сообщения от nina_
 
Регистрация: 26.06.2016
Сообщений: 29

Сохранить дату в бд с помощью ajax
Добрый день

Подскажите: как можно отправить дату из календаря datepicker UI с помощью ajax?

Например сейчас выбранная дата записывается по нажатию кнопки:
<div id="datepicker"></div>
<form method="post" action="process.php" id="myform" name="myform">
    <input id="input" name="input" type="text">
    <input type="submit" name="submit" id="submit" value="submit">
</form>


<script type = "text/javascript">
    jQuery(document).ready(function() {
        $( "#datepicker").datepicker({
            dateFormat: 'dd/mm/yy',
            altField: '#input'
        });
    });
</script>


А как сделать следующее: click по дате календаря -> дата передана скрипту -> скрипт записал ее в бд и пока все это происходит мы остаемся на странице с календарем?

как я понимаю submit и action теперь не нужны:
<div id="datepicker"></div>
<form method="post" id="myform" name="myform">
    <input id="input" name="input" type="text">
</form>


А как правильно использовать $.ajax и указать ему, что необходимо передать дату скрипту process.php как только дата на календаре будет выбрана и соответственно окажется в value input-а?
jQuery(document).ready(function() {
        $( "#datepicker").datepicker({
            dateFormat: 'dd/mm/yy',
            altField: '#input'
        });
        $("#input").click(function() {
            $.ajax({
                type: 'POST',
                url: "process.php",
                dataType: "json",
                data: $('#myform').serialize(),
                success: function(data) {
                console.log("Done");
                 }
            });
            return false;
        });
    });
</script>

Наверное нужно что-то другое вместо click использовать?
Подскажите, пожалуйста, как это должно быть.
Ответить с цитированием
  #2 (permalink)  
Старый 30.06.2016, 18:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

nina_,
jQuery(document).ready(function() {
        $( "#datepicker").datepicker({
            dateFormat: 'dd/mm/yy',
            altField: '#input',
            onSelect: function(dateText, inst) {
            $.ajax({
                type: 'POST',
                url: "process.php",
                dataType: "json",
                data: dateText,
                success: function(data) {
                console.log("Done");
                 }
            }); }

        });
    });
Ответить с цитированием
  #3 (permalink)  
Старый 30.06.2016, 19:03
Интересующийся
Отправить личное сообщение для nina_ Посмотреть профиль Найти все сообщения от nina_
 
Регистрация: 26.06.2016
Сообщений: 29

А что значат параметры dateText, inst?
Как скрипт понимает, что нужно взять значение input?
Ответить с цитированием
  #4 (permalink)  
Старый 30.06.2016, 19:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

nina_,
http://jquery.page2page.ru/index.php5/%D0%9A%D0%B0%D0%BB%D0%B5%D0%BD%D0%B4%D0%B0%D1%80%D 1%8C_UI
события --> onSelect

или
http://api.jqueryui.com/datepicker/#option-onSelect
Ответить с цитированием
  #5 (permalink)  
Старый 30.06.2016, 19:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

nina_, дата в базу в формате dd/mm/yy не будет записана, если поле имеет тип DATE.
Ответить с цитированием
  #6 (permalink)  
Старый 30.06.2016, 19:35
Интересующийся
Отправить личное сообщение для nina_ Посмотреть профиль Найти все сообщения от nina_
 
Регистрация: 26.06.2016
Сообщений: 29

Прочитала, но не поняла следующее:

Функция, заданная в onSelect будет вызываться выборе даты в календаре. Первый параметр, передаваемый в нее будет содержать текст выбранной даты, в формате, определенном в свойстве dateFormat. Второй параметр будет содержать объект самого календаря. Переменная this будет содержать input-элемент, к которому привязан текущий календарь.

$("selector").datepicker({
   onSelect: function(dateText, inst) { ... }
});

О какой переменной this идет речь в примере?
Ответить с цитированием
  #7 (permalink)  
Старый 30.06.2016, 19:36
Интересующийся
Отправить личное сообщение для nina_ Посмотреть профиль Найти все сообщения от nina_
 
Регистрация: 26.06.2016
Сообщений: 29

Ясно, спасибо за уточнение. Тип у меня varchar, но дата, пока, все равно не записывается.
Ответить с цитированием
  #8 (permalink)  
Старый 30.06.2016, 19:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от nina_
Тип у меня varchar
Это плохо.
Ответить с цитированием
  #9 (permalink)  
Старый 30.06.2016, 19:39
Интересующийся
Отправить личное сообщение для nina_ Посмотреть профиль Найти все сообщения от nina_
 
Регистрация: 26.06.2016
Сообщений: 29

А как правильно?
Ответить с цитированием
  #10 (permalink)  
Старый 30.06.2016, 19:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от nina_
А как правильно?

Я не знаю (или забыл если ранее сталкивался) этого плагина, но по идее this, это объект на который повешен календарь. На сервер же нужно передавать не dateText, а ключ = dateText, где ключом может быть имя поля, которому и назначен календарь, то есть:

data: this.name+'='+dateText,

а на сервере принимать как

$_POST['name'], где name имя поля.

А для того, чтобы в полной мере использовать дату в базе (выборка/сортировка) тип должен быть DATE, и это формат YYYY-mm-dd
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка страниц с помощью ajax radikal AJAX и COMET 3 29.11.2012 16:26
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Работа 6 06.09.2010 16:16
как поменять цвет элементов div с помощью ajax? uspehovna AJAX и COMET 12 20.08.2010 17:21
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Общие вопросы Javascript 1 15.07.2010 17:12
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24