Сохранить дату в бд с помощью 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, время: 20:29. |