按日期检查是否在jquery中度假的功能

时间:2017-06-26 21:27:13

标签: javascript php jquery mysql database

我正在尝试在jquery中创建一个函数,它根据我的数据库检查给定日期是否是假日。我创建了这个函数:

IsAHoliday(date)

这是我的代码:

function IsAHoliday(date) {
    var datum = moment(date).format('YYYY-MM-DD');
    var dataString = 'action='+ datum;
    $.ajax ({
        type: "POST",
        url: 'include/datumPraznik.php',
        cache: false,
        async: false,
        data: dataString,
        success: function(r)
        {
            return r;
        } 
    });
}

使用此代码,我无法执行类似

的操作
if(IsAHoliday(date)) {

我怎么能实现这个目标?

<小时/> 编辑:这是我的datumPraznik.php

<?php
    include_once('db-config.php');

    $datum = $_REQUEST['action'];
    $stmt=$db_con->prepare('SELECT * FROM praznici WHERE praznik_datum=:datum');
    $stmt->execute(array(':datum'=>$datum));
    $row = $stmt->fetchAll(PDO::FETCH_ASSOC);
    if(count($row)>0)
    {
        $praznik = true;
    }
    else
    {
        $praznik = false;
    }
    echo $praznik;
?>

3 个答案:

答案 0 :(得分:0)

所以你可以做的就是让你的PHP返回JSON,这样你就可以用AJAX成功函数来处理它。

$datum = $_REQUEST['action'];
$stmt=$db_con->prepare('SELECT * FROM praznici WHERE praznik_datum='.$datum);
$stmt->execute();
if($stmt->fetchColumn() > 0){
    $praznik = true;
} else {
    $praznik = false;
}
return json_encode(array('praznik' => $praznik));

你的AJAX就是

$.post('include/datumPraznik.php', data, function(d) {
if(d.praznik === true) {
console.log('This is a holiday');
} else {
console.log('This is not a holiday');
}
});

所以你更新的功能是:

function isHoliday(date) {
 var datum = moment(date).format('YYYY-MM-DD');
 var data = 'action='+ datum;
    $.post('include/datumPraznik.php', data, function(d) {
    if(d.praznik === true) {
    return true;
    } else {
    return false;
    }
    });

}

并将其用作:

if(isHoliday(date) === true) {
// do something
}

答案 1 :(得分:0)

首先,PHP需要返回JSON,因此请更改:

echo $praznik;

为:

echo json_encode($praznik);

其次,由于AJAX是异步的(你不应该使用async: false),你的函数应该进行回调:

function IsAHoliday(date, truecb, falsecb) {
    var datum = moment(date).format('YYYY-MM-DD');
    var dataString = 'action='+ datum;
    $.ajax ({
        type: "POST",
        url: 'include/datumPraznik.php',
        cache: false,
        data: dataString,
        success: function(r)
        {
            if (r) {
                truecb();
            } else {
                falsecb();
            }
        } 
    });
}

然后将其称为:

IsAHoliday(date, function() {
    // stuff to do on holiday
}, function() {
    // stuff to do on non-holiday
});

答案 2 :(得分:0)

我无法使用您的解决方案解决我的问题,但我已经将它们结合起来并找到了解决方案。

  1. 我创建了一个全局变量(数组)并调用了ajax,它返回 ALL HOLIDAY DATES 并将它们存储在全局变量中。
  2.     var prazniciArray = [];
        $(document).ready(function()
        {
            $.ajax ({
                type: "POST",
                url: 'include/datumPraznik.php',
                dataType: 'json',
                cache: false,
                success: function(rez)
                {
                    praznici = rez;
                    for (var i = 0; i < praznici.length; i++) {
                        prazniciArray.push(moment(praznici[i]));
                    }
                    $('#datetimepicker1').data("DateTimePicker").disabledDates(prazniciArray);
                } 
            });
        }
    
    1. 之后我可以完成这个功能:
    2. function IsHoliday(date) {
          var datum = moment(date).format('YYYY-MM-DD');
          if(jQuery.inArray(datum, praznici) !== -1)
          {
              return true
          }
          else
          {
              return false;
          }
      }
      
      1. datumPraznik.php
      2. <?php
            include_once('db-config.php');
        
            $stmt=$db_con->prepare('SELECT praznik_datum FROM praznici');
            $stmt->execute();
            $row = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $praznici = count($row);
            $prazniciarray = array();
        
            for ($i = 0; $i < $praznici; $i++) {    
                array_push($prazniciarray,$row[$i]["praznik_datum"]);
            }
        
            echo json_encode($prazniciarray);
        ?>
        

        我的桌子看起来像这样:

        praznik_id | praznik_ime  | praznik_datum   
        -----------------------------------------
        |     1    | Thanksgiving | 2017.07.01