2016-03-08 98 views
1

我有一种情况,我觉得这是很容易解决,但我似乎无法找到正确的关键字/方式来做到这一点。JQuery Datepicker到PHP变量没有形式

我已经得到了

一个jQuery的DatePicker没有一种形式。它附加到跨度,因为我希望我的日历成为我网站上的菜单项。如果我将鼠标悬停/点击“日历”菜单项,在日期选择器显示:

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

我想要什么/需要

我想通过与日期选择到PHP选定的日期,所以我可以在网站的其他地方使用它作为变量。

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

我能做到这一点的最佳方式是什么?

- 编辑 -

也许我应该给多一点的解释。我有图片,保存在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>'; 
?> 
+0

使用您已经使用AJAX和形式看到的例子,除了用jQuery的日期选择器的'ONSELECT '而不是在表单提交上运行AJAX。 – WheatBeak

回答

1

的Javascript 修订

$("#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注意

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

processdate.php,创建同一个目录这个PHP文件作为网页具有JS

<?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");与任何你想要的发生,如果它是成功的,我假定重定向到您的图片网页。

+1

已测试,它应该工作,如果'var date = $(this).html();'用'var date = $('#datepicker')。datepicker(“getDate”);' – Shehary

+0

好的调用,编辑。 – WheatBeak

+0

我将你的代码添加到了我的页面,并用'echo $ _POST ['selected_date'];'创建了processdate.php'但是如果我选择一个日期,我会得到'nope :-('。什么错误? – ZipperZapper

0

你可以做一个帖子,它是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']