如何将变量从Javascript传递给PHP?

时间:2016-08-29 11:14:00

标签: javascript php twitter-bootstrap

我已经检查了几十个已经回答的类似主题,我根本无法解决我遇到的问题。 我正在使用引导日期时间选择器(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没有传递日期,我不知道为什么。这篇文章没有发生。 我试过你们提到的所有建议,认为它们可能是答案,但没有运气。

3 个答案:

答案 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);
})