Сохранить дату в бд с помощью 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 использовать? Подскажите, пожалуйста, как это должно быть. |
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"); } }); } }); }); |
А что значат параметры dateText, inst?
Как скрипт понимает, что нужно взять значение input? |
|
nina_, дата в базу в формате dd/mm/yy не будет записана, если поле имеет тип DATE.
|
Прочитала, но не поняла следующее:
Функция, заданная в onSelect будет вызываться выборе даты в календаре. Первый параметр, передаваемый в нее будет содержать текст выбранной даты, в формате, определенном в свойстве dateFormat. Второй параметр будет содержать объект самого календаря. Переменная this будет содержать input-элемент, к которому привязан текущий календарь. $("selector").datepicker({ onSelect: function(dateText, inst) { ... } }); О какой переменной this идет речь в примере? |
Ясно, спасибо за уточнение. Тип у меня varchar, но дата, пока, все равно не записывается.
|
Цитата:
|
А как правильно?
|
Цитата:
Я не знаю (или забыл если ранее сталкивался) этого плагина, но по идее this, это объект на который повешен календарь. На сервер же нужно передавать не dateText, а ключ = dateText, где ключом может быть имя поля, которому и назначен календарь, то есть: data: this.name+'='+dateText, а на сервере принимать как $_POST['name'], где name имя поля. А для того, чтобы в полной мере использовать дату в базе (выборка/сортировка) тип должен быть DATE, и это формат YYYY-mm-dd |
Часовой пояс GMT +3, время: 09:18. |