【发布时间】:2013-06-27 22:59:00
【问题描述】:
<?php
date_default_timezone_set('America/Los_Angeles');
$time = date('Gi', time());
$day = date('l', time());
?>
<script type="text/javascript">
$(function() {
$(".show_hide").click( function()
{
var locTime = <?php echo json_encode($time) ?>;
var locDate = <?php echo json_encode($day) ?>;
$.getJSON( "url_to_json", function(data) {
for (var i = 0; i < data.location[locDate].length; i++) {
console.log("sucess1");
xr_mon= data.location.locDate[i];
console.log("sucess2");
if (locTime >= xr_mon.kai && locTime < xr_mon.guan ){
console.log("cafe is open!");
$('.xr').show();
break;
}
else {
console.log("cafe is closed");
$('.xr').hide();
}
}
});
}
);
});
JSON
{ "location":
{
"Monday": [
{"kai": 700, "guan": 1400},
{"kai": 1700, "guan": 2100}
],
"Tuesday": [
{"kai": 700, "guan": 1400},
{"kai": 1700, "guan": 2100}
],
"Wednesday": [
{"kai": 700, "guan": 1400},
{"kai": 1700, "guan": 2100},
{"kai": 2200, "guan": 2400},
{"kai": 0, "guan": 200}
],
"Thursday": [
{"kai": 700, "guan": 1400},
{"kai": 1700, "guan": 2100},
{"kai": 2200, "guan": 2400},
{"kai": 0, "guan": 200}
],
"Friday": [
{"kai": 700, "guan": 1400},
{"kai": 1700, "guan": 2100},
{"kai": 2200, "guan": 2400},
{"kai": 0, "guan": 200}
],
"Saturday": [
{"kai": 1000, "guan": 1500},
{"kai": 1700, "guan": 2100},
{"kai": 2200, "guan": 2400},
{"kai": 0, "guan": 200}
],
"Sunday": [
{"kai": 1000, "guan": 1500},
{"kai": 1700, "guan": 2100},
{"kai": 2200, "guan": 2400},
{"kai": 0, "guan": 200}
]
}
}
其中 kai = 营业时间 和 guan = 关闭时间
使用 locDate 是通过 php 服务器端日期提取的,我想用我的 JSON 调用字符串替换生成的日期,该字符串包含工作日所在的部分。
从这里
for (var i = 0; i < data.location.'locDate'.length; i++)
到这里
for (var i = 0; i < data.location.Thursday.length; i++)
我如何以正确的方式做到这一点。有人建议使用 [locDate],但它不会替换 php 日期数据中的变量。
【问题讨论】:
-
为了记录,这是不是 JSON。这些是原生 JavaScript 对象。 JSON 是 JavaScript 对象的序列化——这就是为什么有一个 N 表示 Notation。
-
我正在尝试使用 data.location.'locDate'.length 调用外部 JSON,但通过 php 服务器端给我当前日期。
-
“JSON 调用”将是使用 AJAX(或类似)方法的实际查询。然而,一旦你拥有它(并解析)它现在就是一个 JavaScript object。
-
我更新了原帖,希望这能澄清我正在尝试做的事情。
-
@user:我认为你错过了我所追求的。当您看到
"{x:1,y:2,z:3}"时,那是“JSON”。但是,当您现在引用foo.x、foo.y和foo.z时,您现在正在使用 Javascript 对象(JSON 服务于它的目的——它发送信息并被反序列化回 JavaScript 对象)。这就是我要说的。
标签: javascript jquery json for-loop