JQuery Datepicker - 将选定日期发送到新页面,将其用作php变量

时间:2016-10-19 19:27:03

标签: javascript php jquery datepicker jquery-ui-datepicker

修改

我得到了它的工作,将日期隐藏在目标网站后面。另一方面,我使用$ _GET ['val']来获取值。但是这 太过于hacky ,我很想看到一个更安全的解决方案。但是现在它有效。

我想要实现的目标

第1页: 显示日期选择器。用户点击日期并转到“第2页”。

第2页: 显示之前选择的日期。

问题是什么? 如何将所选日期发送到新页面(因此我可以将日期存储在php变量中)。另外,我想在选择日期后自动将用户定向到新页面。

这是我到目前为止所得到的:

index.php (包含日期选择器)

$( function() {
    $( "#datepicker" ).datepicker({
        onSelect: function(dateText, inst) {                    
            var date = $('#datepicker').val();  
            alert(date);
            $.post('getdate.php', {'val': dateText});
        }
    });
}); 

getdate.php

<?php
  $value = $_POST['val'];
  echo "I got your value! $val";
?>

警报显示所选日期,因此变量包含日期。但我无法理解,所以请将它发送到我的下一页。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

您正在发布dateText ...尝试发布日期,如:

$.post('getdate.php', {'val': date});

答案 1 :(得分:0)

你有很多选择让它发挥作用。以下是其中三个:

1)将所选日期作为查询参数发送到第2页:

$( function() {
    $( "#datepicker" ).datepicker({
        onSelect: function(dateText, inst) {                    
            var date = $('#datepicker').val();  
            window.location.href = 'page2.php?date=' + date;
        }
    });
}); 

2)将您的日期选择器放入表格内,并在选择日期后提交。

3)将日期存储在 getdate.php 文件中的会话中:

if (!empty($_POST['val'])) {
    session_start();
    $_SESSION['current_date'] = $_POST['val'];
}

...并在第二页内查看:

//page2.php
session_start();
if (!isset($_SESSION['current_date'])) {
    header('Location:index.php'); //redirect to first page if date not set
}

$selectedDate = $_SESSION['current_date'];
....

选择更适合您问题的那个。

答案 2 :(得分:0)

您的脚本将日期发送到脚本 getdate.php 。但是你没有在浏览器中看到它,因为你的ajax帖子没有将用户发送到页面。为此,您需要将脚本指向该页面,一种方法是使用表单:

index.php 也应该有一个表单:

<form id="hiddenfrm" action="getdate.php" method="post">
    <input type="hidden" name="val" id="val" />
</forms>


<script>
$( function() {
    $( "#datepicker" ).datepicker({
        onSelect: function(dateText, inst) {                    
            var date = $('#datepicker').val();  
            $('#val').val(date);
            $('hiddenfrm').submit();
        }
    });
}); 
</script>

答案 3 :(得分:0)

它可能也很简单,因为val参数在引号中,我不认为它应该是。

$.post('getdate.php', {val: date});