javascript - 为什么我的 PHP 数组没有作为数组发布到 JavaScript?

标签 javascript php mysql arrays jquery-ui

这是我第一次构建自己的 JavaScript 代码,所以还没有完全跟上它的速度。

我正在查询我的 MySQL 数据库以获取所有禁用的日期,以便在日期选择器中禁用结果。我几乎可以正常工作,但问题是当从数据库中读取两个值时,只有一组值被发布到 JavaScript 变量。即,如果我的数据库中有两笔预订,一笔来自 6/3/15 - 10/3/15,另一笔来自 14/3/15 - 17/3/15 只有一个存储在 JavaScript 变量中。即 6/3/15 - 10/3/15。

当我回显 json_encode($date_list) 时,我得到的结果是:

["2015-3-14","2015-3-15","2015-3-16","2015-3-17","2015-3-17"] 
["2015-3-6","2015-3-7","2015-3-8","2015-3-9","2015-3-10","2015-3-10"]

这是正确的,但是当我对 bookedDays 变量执行 console.log 时,存储的唯一值是:

["2015-3-6", "2015-3-7", "2015-3-8", "2015-3-9", "2015-3-10", "2015-3-10"]

下面是我使用的代码。

<?php
    $bookeddates = "SELECT fromdate, todate FROM messages WHERE listing_id = '".$_GET['listingid']."'";
        $resultbookeddates = mysql_query($bookeddates) or die(mysql_error() . "<br>" . $bookeddates);
        while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates)) {


            $from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
            $to = date('Y-n-j', strtotime($rowbookeddates['todate']));

            $start_time = strtotime($from);
            $end_time = strtotime($to);
            $date_list = array($from);

            $current_time = $start_time;

            while($current_time < $end_time) {
                //Add one day
                $current_time += 86400;
                $date_list[] = date('Y-n-j',$current_time);
            }

            $date_list[] = $to;   




?>
<script type="text/javascript">
    var bookedDays = <?php echo json_encode($date_list); ?>;
</script>

                     <?php
                     echo json_encode($date_list); 

            } ?>

如有任何帮助,我们将不胜感激。

最佳答案

您需要像这样将注入(inject)的 JS 移出 while 循环。正如评论中所说,首先构建您的数据,然后输出它。

<?php
    $bookeddates = "SELECT fromdate, todate FROM messages WHERE listing_id = '".$_GET['listingid']."'";
        $resultbookeddates = mysql_query($bookeddates) or die(mysql_error() . "<br>" . $bookeddates);
        $date_list = array();
        while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates)) {


            $from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
            $to = date('Y-n-j', strtotime($rowbookeddates['todate']));

            $start_time = strtotime($from);
            $end_time = strtotime($to);
            $date_list[] = $from;

            $current_time = $start_time;

            while($current_time < $end_time) {
                //Add one day
                $current_time += 86400;
                $date_list[] = date('Y-n-j',$current_time);
            }

            $date_list[] = $to;   

       } ?>

<script type="text/javascript">
    var bookedDays = <?php echo json_encode($date_list); ?>;
</script>

                     <?php
                     echo json_encode($date_list); 

关于javascript - 为什么我的 PHP 数组没有作为数组发布到 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28875089/

相关文章:

php - curl 获取不到外部网站

mysql - 在更新期间只为我的查询锁定表?

mysql为同一个schema类型多张表创建一个表名

javascript - 在 Gatsby 中设置环境变量

javascript - useState 不适用于 Material ui 功能组件(firebase)

javascript - 将变量传递给指令 AngularJS 内的动态 Controller

php - 难以从两页注册中传递变量

php - 如何处理介绍 friend 的数据?

php - Bootstrap 自动完成(提前输入)不起作用

javascript - 使用递归和 for 循环解析 JSON