【问题标题】:How to pass a variable from Javascript to PHP?如何将变量从 Javascript 传递给 PHP?
【发布时间】:2026-01-22 22:10:01
【问题描述】:

我已经检查了几十个已经回答的类似主题,但我根本无法解决我遇到的问题。 我正在使用引导日期时间选择器 (https://eonasdan.github.io/bootstrap-datetimepicker),我的目标是在日期更改时将显示的值从保存日历 (calendar.php) 的页面传递到 PHP 文件 (data.php)。

下面我添加了代码。由于我在本地存储了一些文件,因此我从 Chrome 的开发工具中添加了一些信息。

日期选择器工作正常,我可以使用 Javascript 获取值。 问题是没有任何东西传递给 PHP。 检查了语法..在这一点上对我来说一切似乎都很好。 我不知道我做错了什么。任何建议都会受到欢迎!

日历.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(function) 的。

我的问题是我的 php 文件 (data.php) 是空的。 Ajax 没有通过日期,我不知道为什么。帖子不会发生。 我尝试了你们提到的所有建议,认为它们可能是答案,但没有运气。

【问题讨论】:

    标签: javascript php twitter-bootstrap


    【解决方案1】:

    PHP 正在输出值。 Web 服务器正在将值发送到浏览器。浏览器将这个价值赋予了 JavaScript。 jQuery 正在处理该值。然后你忽略它。

    它作为第一个参数传递给你传递给done的函数,使用它。

    .done(function(data_in_response) { alert(data_in_response); })
    

    【讨论】:

    • 首先,感谢昆汀的回答。不幸的是,我也编辑了帖子,我的问题是我的 data.php 文件;该文件没有接收到从 calendar.php 发送的数据。我真的不知道我错过了什么。 P.S:我也尝试了您的解决方案,认为这可能是我正在寻找的答案,但没有运气。
    • "该文件没有接收到从 calendar.php 发送的数据" — 是什么让你这么认为?它所做的只是将数据回显给 JS,而你的 JS 会忽略它。
    • “我也尝试了你的解决方案”——你尝试的时候发生了什么?
    • 你做了什么来弄清楚发生了什么?您是否使用浏览器内置的开发人员工具来检查控制台是否有错误,并使用“网络”选项卡来查看正在发送到服务器的数据以及服务器响应的内容?
    • “网络”选项卡确实很有帮助,我确切地看到了“data_in_response”的含义以及 data.php 如何发送数据。感谢您的指点。我设法实现了我希望做的事情。
    【解决方案2】:

    您应该将相同的变量放在 ajax 响应函数中以打印响应,即,

    .done(function(data){
      alert(data);
    })
    

    【讨论】: