我已经检查了几十个已经回答的类似主题,我根本无法解决我遇到的问题。 我正在使用引导日期时间选择器(https://eonasdan.github.io/bootstrap-datetimepicker),我的目标是每当日期改变时将显示的值从保存日历的页面(calendar.php)传递到PHP文件(data.php) 。
下面我添加了代码。由于我在本地存储了一些文件,因此我从Chrome的开发工具中添加了一些信息。
日期选择器工作正常,我可以使用Javascript获取值。 问题是没有任何东西传递给PHP。 检查语法..在这一点上,对我来说似乎很好。 我不知道我做错了什么。任何建议都会受到欢迎!
calendar.php:
<html>
<head>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script type="text/javascript" src="moment.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script type="text/javascript" src="bootstrap-datetimepicker.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="bootstrap-datetimepicker.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class='col-sm-6'>
<div class="form-group">
<div class='input-group date' id='datetimepicker1' >
<input type='text' id='date' name='date' class="form-control" >
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(function () {
// Formatting how date is displayed
$('#datetimepicker1').datetimepicker({
calendarWeeks: true,
format: "YYYY MM DD"
});
//Displaying the current date in the text box when the page is accessed
$('#datetimepicker1').data("DateTimePicker").date(new Date());
// Sending the date to PHP when the user is changing it
//dp.change is an event fired when date is changed
$('#datetimepicker1').on("dp.change",function(){
var day = $('#date').val();
$.ajax({
type: "POST",
url: "data.php",
data: { day : day } })
.done(function() { alert(day); })
.fail(function() { alert("error"); })
});
})
})
</script>
</div>
</div>
</body>
</html>
当我执行代码时,它会提醒我当天(它转到.done(function(){alert(day);}))并且在我目前的理解中,帖子是成功的,或者至少是如何我解释它。 这是来自Chrome的开发工具。 我试图表明该值已被检索。没有其他错误出现。
// Sending the date to PHP when the user is changing it
$('#datetimepicker1').on("dp.change",function(){
var day = $('#date').val(); // Date gets retrieved : day = "2016 08 03"
$.ajax({
type: "POST",
url: "data.php",
data: { day : day } }) // Date gets retrived: day = "2016 08 03"
.done(function() { alert(day); }) // I get a pop-up with the date
.fail(function() { alert("error"); })
});
})
})
包含Javascript代码的文件和包含PHP代码的文件位于同一文件夹中。
PHP(data.php)代码如下:
<?php
if(isset($_POST['day']))
{
$day = $_POST['day'];
echo $day;
}
?>
我根本无法弄清楚我在上面的代码中做错了什么或错过了什么。
编辑:
我认为我没有把重点放在我所拥有的问题上,我很抱歉。你的所有建议(非常感谢他们)都是关于.done(函数)。
我的问题是我的php文件(data.php)是空的。 Ajax没有传递日期,我不知道为什么。这篇文章没有发生。 我试过你们提到的所有建议,认为它们可能是答案,但没有运气。
答案 0 :(得分:1)
PHP正在输出值。 Web服务器正在将值发送到浏览器。浏览器正在为JavaScript提供该值。 jQuery是具有价值的流程。然后你忽略它。
它作为传递给done
的函数的第一个参数传递,使用它。
.done(function(data_in_response) { alert(data_in_response); })
答案 1 :(得分:0)
你应该在ajax响应函数中放入相同的变量来打印响应,即
.done(function(data){
alert(data);
})
答案 2 :(得分:-2)
您必须在ajax响应函数中传递相同的变量
.done(function(data){
alert(data);
})