【发布时间】:2017-03-24 11:32:05
【问题描述】:
我在页面上使用 jquery datepicker。在 datepicker 旁边,我有一个部分将显示 datepicker 的 mouseenter 上的事件。我想出了一种方法将日期放入本节的标题中。我遇到的问题是将该变量传递到将在 mouseenter 上显示的 php 页面。
下面是显示日期选择器和事件的页面:
<div id=events>
<div id=eventcontent>
</div>
</div>
<div id=eventsheading>
<div id=headingcontent>
</div>
</div>
<div id = "datepicker">
</div>
这是我用来用日期填充标题的 Jquery(有效),将相同的变量发送到 events.php(无效),并在内容 div 中显示 events.php(有效当我突出显示日期时,会显示你好):
$(document).on('mouseenter', '.ui-datepicker-calendar .ui-state-hover', function(e){
var daynum1 = $(this).text();
var month1 = $('.ui-datepicker-month').text();
var year1 = $('.ui-datepicker-year').text();
var Date = daynum1 + " " + month1 + " " + year1;
$('#headingcontent').html(Date);
//ajax call with date information
var request = $.ajax({
url: "events.php",
type: "POST",
data: {Date: Date},
dataType: "html"
});
$.ajax({
url: "events.php",
cache: false,
success: function(html){
$("#eventcontent").append(html);
}
});
});
下面是events.php:
if(isset($_POST['Date']))
{
$date = $_POST['Date'];
echo <<<_END
<p>$date</p>
_END;
}
else
{
echo <<<_END
<p>hello!</p>
_END;
}
一旦我开始工作,事件 PHP 将被更改为从 mysql 中选择事件。
为了澄清,我遇到的问题是使用此代码通过 ajax 发送可变日期:
//ajax call with date information
var request = $.ajax({
url: "events.php",
type: "POST",
data: {Date: Date},
dataType: "html"
});
我似乎找不到任何解释 data: {...} 应该如何使用的地方,我猜这是我的问题。
对不起,如果代码完全错误,我对学习这一切很陌生,感谢您的帮助。
【问题讨论】:
-
首先:不要使用与内置对象冲突的变量名 - JS 已经有一个
Date对象,所以使用它作为变量名是自找麻烦。 (是的,仅在所示代码中它是一个局部变量 - 但还是不要这样做。) -
其次 - 你为什么要在这里发出 两个 AJAX 请求?您只发送第一个数据 - 所以在第二个中,该值当然不可用。只需发出 一个 请求,将数据发送到服务器,然后在页面中显示响应。
-
@CBroe 关于名字的好点,我会改变它。我对这一切都很陌生,是否可以进一步解释如何将第二个请求作为请求?
-
你不需要两个请求。发出一个发送数据的 POST 请求 - 并为该请求指定一个成功回调。
-
首先尝试了解请求和响应的范围,当您使用 Date 使用发布数据发出第一个请求时,它仅适用于您的第一个请求,因此当您尝试执行第二个请求时,它将进入其他部分,因为日期是在第一个请求中发布的,希望这对你有意义
标签: php jquery ajax datepicker