【问题标题】:JQuery Datepicker - Send selected date to a new page, using it as a php variableJQuery Datepicker - 将选定的日期发送到新页面,将其用作 php 变量
【发布时间】:2016-10-19 19:27:03
【问题描述】:

编辑

我把 URL 后面的日期放到目标站点上。另一方面,我使用 $_GET['val'] 来获取价值。但这太老套了,我希望看到更安全的解决方案。但现在它可以工作了。


我正在努力实现的目标

第 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";
?>

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

感谢您的帮助!

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

  • 哦抱歉,打错了。但该网站保持不变。如何让它加载显示接收日期的新页面“getdate.php”。
【解决方案2】:

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

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'];
....

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

【讨论】:

  • 我的日期选择器位于“index.php”中。如何将它从 index.php 保存到会话中?
【解决方案3】:

您的脚本正在将日期发送到脚本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>

【讨论】:

    【解决方案4】:

    它也可能像 val 参数在引号中一样简单,我认为不应该这样。

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

    【讨论】:

    • 您是否在回显您拥有的正确值echo "I got your value! $val";,它应该是echo "I got your value! $value";
    • @DefFx 该网站并未引导我访问 getdate.php。它停留在 index.php,但我想在选择 index.php 页面上的日期后将用户定向到 getdate.php。是的,我在呼应正确的值,但还没有那么远,还没有看到结果。
    • 您的 post 方法不会在该页面上吸引用户。 getdate.php 中的 echo 会将结果发送回当前页面。我通过将结果 div 添加到主页如&lt;div id="results"&gt;&lt;/div&gt; 然后像$.post('getdate.php', {'val': date},function( data ) { $( "#results" ).html( data ); }); 这样的返回来进行成功的测试。如果您将对象发送回页面,您将需要在回显之前和结果中进行 json 编码你需要JSON.parse(data);
    • 如果您尝试登陆 getdate.php,您将不得不尝试人们在此处建议的其他方法之一,但我的最后一条评论将在 getdate.php 中进行计算并将结果发回给您当前页面
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多