我正在尝试异步发送一些数据到服务器,如下所示:
(function($){
$(document).ready(function($){
var hiddenElement = $("#datepicker");
$("#date_search").on('click', function(e){
e.preventDefault();
if(hiddenElement.is(':visible')){
hiddenElement.datepicker().slideUp(700);
} else {
hiddenElement.datepicker({
dateFormat: "yy-mm-dd",
onSelect: function(){
var selectedDate = $(this).val();
var request = $.ajax({
url: "",
method: "GET",
data: {date: selectedDate},
dataType: "html"
});
request.done(function(msg){
});
}
}).slideDown(700);
}
})
});
})(jQuery)
<?php // front-page.php
$filter_date = isset($_REQUEST['date']) ? $_REQUEST['date'] : current_time('Y-m-d');
print_r( $filter_date );
?>
<style>
html, body, #page, #content {height: 100%;}
#datepicker {display:none;}
#searchby {list-style-type: none;}
#searchby li {float: left;padding-right: 1em;}
</style>
<ul id="searchby">
<li><a id="date_search" href="">search by date</a><div id="datepicker"></div></li>
<li><a href="">search by category</a></li>
<li><a href="">archive</a></li>
</ul>
点击日期选择器和PHP脚本中的任何日期,将“2016-07-29”即今天的日期打印到屏幕上。不是我想要的。当然应该打印用户选择。
看着控制台我可以看到:
但是可以使用推动来实现它。
编辑:
确实学习技巧如:
success: function(res){
console.log($(res).find("#log").text());
}
和
<p id="log"><?php print_r($filter_date); ?></p>
是有益的。
答案 0 :(得分:1)
首先,你的jQuery应该重写为:
var request = $.ajax({
url: "",
method: "GET",
data: {date: selectedDate},
dataType: "html",
success: function(res) {
console.log(res);
//Do what you want here with the date
}
});
另外:因为您自己调用脚本,所以您将获得所有输出(html和其他数据)。通常,您只需要JSON或完全符合您需要的字符串。您可以通过以下两种方式之一完成此操作。
调用另一个除了获取日期之外什么都不做的脚本,然后返回一个字符串。恩。 getdate.php
,只有:
print_r( $filter_date );
?>
如果date
中设置$_REQUEST
:
<?php // front-page.php
if ( isset($_REQUEST['date']) )
{
echo $_REQUEST['date'];
exit;
}
?>