【问题标题】:Updating Pickadate Input via AJAX通过 AJAX 更新 Pickadate 输入
【发布时间】:2018-03-31 17:50:05
【问题描述】:

我使用Pickadate.jsJQuery Form Plugin。我有单独的日期和时间选择器。我想要做的是根据日期选择器的值禁用时间选择器中的时间。所以,我正在尝试将 JSON 数据放入picker.set("disable", [ ]);。我可以 console.log 纯文本,但它仍然是漫无目的的。

我尝试了很多并且遇到了these solutions in that question。但我无法启动它们。 (我将 pickadate 函数和类改编为 pickatime 的。)

// Javascript
$(document).ready(function() {
  $("input").click(function() {
    $(".datepicker").pickadate({
      format: 'yyyy-mm-dd',
      formatSubmit: 'yyyy-mm-dd',
      min: true,
      max: false
    });
    var $input = $(".timepicker").pickatime({
      format: 'HH:i',
      formatSubmit: 'HH:i',
      formatLabel: 'HH:i'
    });
    $('.datepicker').change(function() {
      $('#form').ajaxSubmit({
        target: '#check_result',
        url: 'check.php',
        success: function showResponse(responseText, $form) {
          var picker = $input.pickatime('picker');
          picker.set("disable", [
            console.log(responseText)
          ]);
        }
      });
      return false;
    });
  });
});
// PHP (check.php)
<?php
// Database connection done.
$date = mysqli_real_escape_string($con, $_POST['date']);
$match_query = mysqli_query($con, "SELECT * FROM booking WHERE DATE(time) = '$date'");
$disabled_times = array();
if ($result = $match_query) {
	while ($row = mysqli_fetch_assoc($result)) {
		$disabled_times[] = $row['time'];
	}
	mysqli_free_result($result);
}
echo implode($disabled_times);
?>

【问题讨论】:

    标签: javascript php jquery ajax pickadate


    【解决方案1】:

    你能发布一个从你的 php 返回的 json 的例子吗?

    根据文档 (http://amsul.ca/pickadate.js/api/#method-get-disable) 你的 json 应该是这样的:[2,30], [4,30], [9,0]

    如果您的 json 是正确的,请确保它没有作为字符串传递给时间选择器。尝试类似:

    var json = JSON.parse(responseText);
    picker.set("disable", [ json ]);
    

    更新: 我猜使用以下代码,您的 json 将正确返回:

    ...
    $time = explode(',', $row['time']);
    $time[0] = (int)$time[0];
    $time[1] = (int)$time[1];
    $disabled_times[] = $time;
    ...
    echo json_encode($disabled_times);
    

    【讨论】:

    • 谢谢。在我的方法中,console.log(responseText) 准确地返回["[4,30]","[9,0]"]。在你的 console.log(json) 中返回["4,30", "9,0"]。我知道我的代码会生成一个字符串值,但它对我不起作用。我正在寻找传递 json 的正确方法。
    • 干得好!只需要一些更正...var json = JSON.parse(responseText); picker.set("enable", true); picker.set("disable", json);
    猜你喜欢
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2011-01-06
    • 2014-05-22
    • 2020-04-13
    相关资源
    最近更新 更多