JQuery Datepicker to PHP 变量没有形式


JQuery Datepicker to PHP variable without form

我遇到了一个情况,我觉得修复起来很简单,但我似乎找不到正确的关键字/方法来做到这一点。

我有什么

没有窗体的 JQuery 日期选取器。它附加到一个跨度,因为我希望我的日历成为我网站上的菜单项。如果我将鼠标悬停/单击"日历"菜单项,日期选择器将显示:

<ul class="menu vertical">
  <li>
    <span id="datepicker"></span>
  </li>
</ul>

我想要/需要什么

我想将使用日期

选择器选择的日期传递给 PHP,这样我就可以将其用作网站其他地方的变量。

我相信,从其他情况来看,阿贾克斯应该是可能的。但是我找到的所有示例都包括输入字段和/或提交按钮。我没有表单,因为我只想从菜单中显示日期选择器。

我能做到这一点的最好方法是什么?

--编辑--

也许我应该多解释一下。我有图像,保存在dd-mm-yy文件夹中。我希望能够使用日期选择器选择一个日期,然后在图库中显示该文件夹中的图像。这是库的代码:

<?php
$date = INPUT FROM DATEPICKER HERE;
$dirname = "images/$date/";
$images = glob($dirname."*.jpg");
echo '<div id="slider" class="flexslider"><ul class="slides">';
foreach($images as $image) {
    $titel = basename("$image", ".jpg").PHP_EOL;
    echo '<li><img src="'.$image.'" alt="'.basename("$image", ".jpg").PHP_EOL.'"><p class="flex-caption">'.str_replace("_", " ", $titel).'</p></li>';
};
echo '</ul></div>';
?>

Javascript UPDATE

$("#datepicker").datepicker({
    onSelect: function() {
        var date = $('#datepicker').datepicker("getDate");
        $.ajax({
            url: "processdate.php",
            type: "POST",
            async: true,
            data: {
                selected_date: date
            },
            success: function(resp) {
                if (resp === "true") {
                    alert("it worked");
                } else {
                    alert("nope :-(");
                }
            } 
        });
    }
}).datepicker("setDate", new Date());//Set current date.

JAVASCRIPT NOTE

这会将日期设置为当前日期,仅用于显示目的,但它不会运行 AJAX 调用,因为如果运行,您的用户将立即被重定向。 就个人而言,我建议在日期选择器旁边添加一个按钮,该按钮转到下一页,而不是在选择时自动重定向。

Processdate.php,在与具有 js 的页面相同的目录中创建此 PHP 文件

<?php
session_start();
if(isset($_POST["selected_date"])){
    $_SESSION["date"] = $_POST["selected_date"];
    echo "true";
} else {
    echo "false";
}
?>

你的php,这是你在AJAX工作后应该重定向到的页面。

<?php
session_start();
$date = $_SESSION["date"];
$dirname = "images/$date/";
$images = glob($dirname."*.jpg");
echo '<div id="slider" class="flexslider"><ul class="slides">';
foreach($images as $image) {
    $titel = basename("$image", ".jpg").PHP_EOL;
    echo '<li><img src="'.$image.'" alt="'.basename("$image", ".jpg").PHP_EOL.'"><p class="flex-caption">'.str_replace("_", " ", $titel).'</p></li>';
};
echo '</ul></div>';
?>

一旦你有了这个工作,如果它成功了,alert("it worked");用你想要发生的任何事情替换,我假设重定向到你的图像页面。

你可以做一个帖子,它是 post 方法的简写 ajax。

$.post('path/to/php', {variable_name: $('#datepicker')}, function(return_data, result, xhr){
    if(result == 'success')
        console.log(return_data); //or do whatever you want, or keep it empty
});

然后,您可以在 php 中再次接收此变量,就像普通帖子一样:

$_POST['variable_name']