Ajax 将值传递给 datetimepicker

Ajax pass values to datetimepicker

我正在编写代码以使用 Ajax 在 dateTimePicker 中动态设置 daysOfWeekDisabled。

daysOfWeekDisabled 数组有问题。 http://eonasdan.github.io/bootstrap-datetimepicker/Options/#daysofweekdisabled

这是代码。

html:

<div id="show-pic" class="input-group bootstrap-timepicker">
    <input id="datepicker" name="delivery_time" type="text" class="form-control input-small" placeholder="Choose a delivery time"/>
</div> 

脚本:

$.ajax({
    type: 'POST',
    url: '../ajax.php',
    success: function(result) {
        console.log(result);
        $('#datepicker').datetimepicker({
            format: 'DD/MM/YYYY - H:mm',
            minDate: new Date(),
            daysOfWeekDisabled: [result]
        });
    }
});

ajax.php:

$week_day = array('0','6');
$string = implode(',', $week_day);
echo $string;

控制台returns0,6...太棒了!但只有星期日被禁用,6被忽略。

我尝试了一些方法,例如 "json_encode" 或 "join()" 函数,但无法获取。

请帮忙。

谢谢。

好的,问了一些问题我想我知道问题出在哪里了。我相信 php 将一个字符串返回给您的 javascript,而不是一个数组(即使它看起来像一个数组)。所以在 php 中使用 echo json_encode($week_day);

在 ajax 响应中使用 JSON.parse(result) 将其变回数组。您也许可以在 ajax 调用中设置 dataType: json,而不是在返回时解析结果,但有时我遇到了问题。如果你 console.log(result) 并且你不能将数组作为值向下旋转(这意味着它没有明确地说 Array[2] 带有向下旋转的箭头)它可能是一个字符串。看看你用 console.log(JSON.parse(result)) 得到了什么。

为了解决这个问题,我不得不使用"json_encode"(谢谢@fauxserious)。

所以现在是代码。

脚本:

  $.ajax({
    dataType: 'json',
    type: 'POST',
    url: '../ajax.php',
    success: function(result) {
      console.log(result);
      $('#datepicker').datetimepicker({
        format: 'DD/MM/YYYY - H:mm',
        minDate: new Date(),
        daysOfWeekDisabled: result
      });
    }
  });

ajax.php:

$week_day = array(0, 6);
  echo(json_encode($week_day)); 

谢谢大家!