javascript - 将 json 值存储到数组中
问题描述
您好我没有太多经验,但通常在谷歌的帮助下我可以弄清楚,但不是今天。我正在制定一个约会程序,我正在努力阻止日期选择器中数据库中的值。
JS:
<script>
$( function() {
$( "#datepicker" ).datepicker({
minDate: 2,
maxDate: "1w",
beforeShowDay: function(date)
{
var dates = new Array();
$.ajax({
url:"load_days.php",
type:"POST",
success:function(data)
{
for (var i = 0; i < data.length; i++){
dates.push(data)
}
},
dataType:"json"
})
var string = jQuery.datepicker.formatDate('dd-mm-yy', date);
return [ dates.indexOf(string) == -1 ]
}
});
} );
</script>
PHP 文件:
$data = array();
$query = "SELECT * FROM events ORDER BY id";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
{
$data[] = array(
'day' => date("d-m-Y", strtotime($row["start_event"]))
);
}
echo json_encode($data);
解决方案
首先,我建议修改 PHP 脚本以删除['day' => date]
每个事件日期周围的数组包装器。这将使 JavaScript 更容易在数组中查找日期。
foreach($result as $row) {
$data[] = date("d-m-Y", strtotime($row["start_event"]));
}
然后我会稍微重新组织 JS,以便 load_days.php 中的日期只加载一次,然后在每个 beforeShowDay 事件中重新加载而不是重新加载。将PHP返回的数据如上图重新格式化后,ajax返回的数组就可以直接使用了,这样就不再需要for循环对其进行转换了。
$( function() {
$.ajax({
url: "load_days.php",
type: "POST",
success: function (dates) {
$( "#datepicker" ).datepicker({
minDate: 2,
maxDate: "1w",
beforeShowDay: function(date)
{
var string = jQuery.datepicker.formatDate('dd-mm-yy', date);
return [dates.indexOf(string) === -1]
}
})
},
dataType: "json"
});
})
推荐阅读
- python - 如何找到已从客户端使用的域以在 python 套接字中到达我的服务器?
- javascript - 在字符串中查找查询匹配项
- python - 考虑到所需的休假,我如何使用 or-tools 安排员工轮班?
- docker - 重复的 RazorLanguageVersionAttribute 构建容器
- python - 连接外显子序列并在其间插入 Ns
- python - 无法在 Linux 上使用 pip 安装 Ropper
- html - 屏幕阅读器可读取切换内容中的列表信息
- upload - 尝试上传反混淆文件时出现错误
- python - 在 Python 中的 List 中查找和添加整数的最快方法
- php - 使用条件向我的数组添加一个新元素