2016-03-08 94 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']