【问题标题】:Can I place a json call string with with a preset variable? [duplicate]我可以使用预设变量放置一个 json 调用字符串吗? [复制]
【发布时间】: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.xfoo.yfoo.z 时,您现在正在使用 Javascript 对象(JSON 服务于它的目的——它发送信息并被反序列化回 JavaScript 对象)。这就是我要说的。

标签: javascript jquery json for-loop


【解决方案1】:

使用括号表示法。

for (var i = 0; i < data.location[locDate].length; i++)

另一个例子:

thing = [1, 2, 3, 4, 5]
//The following lines do the same thing:
thing.pop()
thing['pop']()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 2013-07-19
    • 2014-07-14
    • 2020-04-22
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多