我正在使用通过hmvc功能设置的CodeIgniter 3. *。 我一直在测试我的应用程序以设置使用时区的时钟,该时区使用用户选择的默认时区。 此时钟使用时刻js。

奇怪的是,当我正确设置时钟后,此错误消息会显示在任何未显示瞬间的页面上。 我不知道为什么会这样。 我正在使用Chrome显示我的输出。

我正在使用矩js和矩数据CDN:

  <!----moment CDNs ---->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<!----moment timezone CDNs ---->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data-2012-2022.js"></script>

当我不打电话进行初始化时,会弹出此错误:

Moment Timezone has no data for <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Project X - Login</title>
    <!----JQuery CDNs ---->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <!----Bootstrap CDNs ---->
    <link rel="stylesheet" type="text/css" rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css"/>
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <!----moment CDNs ---->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
    <!----moment timezone CDNs ---->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data-2012-2022.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-utils.js"></script>
    <!----Daterangepicker CDNs ---->
      <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css"/>
        <script src="https://cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
    <!----Select2 CDNs ---->
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
    <!----D3 CDNs ---->
        <script src="https://www.gstatic.com/charts/loader.js"></script>
        <script src="https://d3js.org/d3.v3.js"></script>
    <!----Tinymce CDNs ---->
    <script src="https://cdn.tinymce.com/4/tinymce.min.js"></script>
    <!----Datatables CDNs ---->
    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">
    <script charset="utf8" src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
    <!----Font Awsome---->
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
    <!----Regular Links ---->
    <link href="http://[::1]/ApplicationProject1/assets/css/style.css" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="http://[::1]/ApplicationProject1/assets/css/user.css"/>
    <link rel="icon" type="image/jpeg" href="http://[::1]/ApplicationProject1/assets/images/favicon.jpg">
    <script src="http://[::1]/ApplicationProject1/assets/js/user.js"></script>
    <script src="http://[::1]/ApplicationProject1/assets/js/objects.js"></script>
    <script src="http://[::1]/ApplicationProject1/assets/js/default.js"></script>
  </head>
<body>
<div class="container">
    <div class="row">
                        <div class="col-md-12">
            <div class="log-in">
                <div class="page-header">
                    <h1>Login</h1>
                </div>
                <form action="http://[::1]/ApplicationProject1/index.php/user/login/get_timezone" method="post" accept-charset="utf-8">
                <div class="input-group" style="margin:2px;width:99%;">
                        <div class="form-group">
                            <div class="input-group" style="margin-bottom:10px;">
                            <span class="input-group-addon fa fa-user" id="basic-addon1"></span>
                            <input type="text" id="username" name="username" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
                         </div>
                        <div class="form-group" style="margin-bottom:15px;">
                            <div class="input-group">
                                <span class="input-group-addon fa fa-lock" id="basic-addon1"></span>
                                <input type="password" class="form-control" id="password" name="password" placeholder="Password" aria-describedby="basic-addon1">
                            </div>
                        </div>
                            <div class="form-group">
                                <input style="float: left; margin-right: 10px" type="submit" class="btn btn-default" value="Login">
                            </div>
                </div>
                </form>
                <div>
                        <a href="http://[::1]/ApplicationProject1/index.php/user/register"><p class="btn btn-default">New User</p></a>
                </div>
            </div>
        </div>
    </div><!-- .row -->
</div><!-- .container -->
. See http://momentjs.com/timezone/docs/#/data-loading/.

我很难弄清楚为什么它只出现在没有显示瞬间的页面上。

#1楼 票数:0

这是我从您建议的调试Adrian Grzywaczewski得到的结果:

jquery.min.js:2 jQuery.Deferred exception: deviceTimeZone is not defined ReferenceError: deviceTimeZone is not defined
    at HTMLDocument.<anonymous> (http://[::1]/ApplicationProject1/assets/js/user.js:2:28)
    at j (https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js:2:29999)
    at k (https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js:2:30313) undefined
r.Deferred.exceptionHook @ jquery.min.js:2
k @ jquery.min.js:2
setTimeout (async)
(anonymous) @ jquery.min.js:2
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
fire @ jquery.min.js:2
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
S @ jquery.min.js:3
jquery.min.js:2 Uncaught ReferenceError: deviceTimeZone is not defined
    at HTMLDocument.<anonymous> (http://[::1]/ApplicationProject1/assets/js/user.js:2)
    at j (jquery.min.js:2)
    at k (jquery.min.js:2)
(anonymous) @ http://[::1]/ApplicationProject1/assets/js/user.js:2
j @ jquery.min.js:2
k @ jquery.min.js:2
setTimeout (async)
r.readyException @ jquery.min.js:2
(anonymous) @ jquery.min.js:2
j @ jquery.min.js:2
k @ jquery.min.js:2
setTimeout (async)
(anonymous) @ jquery.min.js:2
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
fire @ jquery.min.js:2
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
k @ jquery.min.js:2
setTimeout (async)
(anonymous) @ jquery.min.js:2
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
fire @ jquery.min.js:2
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
S @ jquery.min.js:3
jquery.min.js:4 GET http://localhost/ApplicationProject1//get_timezone 404 (Not Found)

之所以调用get_timezone是因为我正在所有页面上都调用时钟,但是此时未定义时区,因此提供了默认时区。 获取时区的呼叫失败的事实是否有任何改变?

-修订-问题是我的get_timezone函数出于某种原因正在返回页面。 这是该函数的代码:

/**
     * default_time_zone function gets the default time zone to use for the modules.
     * @author Peter Kaufman
     */
    public function default_time_zone() {
        $sql = "SELECT `value` FROM `config` WHERE `name` = 'timezone';";
        $results = $this->db->query($sql)->result();

        if (is_array($results)) {
            $results = (array)array_shift($results);
            $_SESSION['timezone'] = $results['value'];
        } else {
            $_SESSION['timezone'] = 'America/New_York';
        }
    }

    /**
     * get_time_zone gets the timezone to use.
     * @author Peter Kaufman
     */
    public function get_timezone() {
        exit($_SESSION['timezone']);
    }

一些如何在某处存在另一个称为get_timezone的函数的原因,因为即使在get_timezone函数的链接不正确的情况下也可以找到它。

#2楼 票数:0 已采纳

答案是添加一个if语句,以确保仅在页面标题没有注册或登录标题时才发生获取默认时区的调用。

"use strict";
$(document).ready(function() {
    var title = document.getElementsByTagName("title")[0].innerHTML;
    title = title.replace('Project X - ', '');
    if (title != 'Register' && title != 'Login') {
        $.ajax({
            url: location + '/get_timezone',
            success: function(resp) {
                new Clock(1000, resp);
            },
        });
    }
});

  ask by Peter Kaufman translate from so

未解决问题?本站智能推荐:

3回复

Codeigniter 3.x-将$ data和动态数据一起预加载到所有视图

题: 出于好奇,我想知道Codeigniter是否提供一种始终将特定数据加载到视图中的方法。 例如:我有一个配置文件,其中包含站点信息,这对于访问所有页面的视图内部将是有益的,而不是每次加载视图时都必须调用以加载该数据,我是否可以始终将其包括在内? 选项1: 某种类
1回复

HMVC安装过程中发生错误,如何清除?

我是Codeigniter HMVC结构的新手,请点击此链接进行安装。 https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/src 已经执行了所有步骤,但是在步骤12到达时显示错误。 脚步:
2回复

Codeignither验证错误

您好团队我有一个小问题,我想知道原因,请参见下面的代码: <input type="text" class="span6" id="item_title" value ="<?php echo set_value('$item_title'); ?>"> 前面
1回复

更新到PHP 7后,CodeIgniter HMVC MX_Loader :: library错误

我在PHP 5.6中使用了Code Igniter 3.0。 从Ubuntu 15.04更新到16.04之后,PHP也从5.6更新到PHP 7。 我正在使用Code Igniter的HMVC实现,并且PHP升级开始引发以下错误:
1回复

如果会话过期,则重定向时不显示自定义错误消息

我正在使用Codeigniter版本3.0.3和HMVC开发登录控制器 当用户登录到管理控制台时,它会设置一个会话令牌,然后将其重定向到url 当会话到期时,它将重定向回管理页面,并应在登录页面上显示消息。 我正在尝试设置$ data变量消息,而不是使用Flash数据
1回复

如何在 php 7 codeigniter 3.1.11 中添加 css 和 js?

** 我知道我需要添加 **对于 css 文件和 ** **对于 js 文件,但实际上不知道我需要在代码中的哪个位置添加它们,我是否需要安装 jquery ,如果是,如何? 有人可以帮我如何完成这个过程吗? 这是我的 html 文件 ** **这是我项目中的引导路径,我是 cod
2回复

具有数据属性时区的Moment.js和Moment时区

我有一个服务器生成的country/city格式的位置列表,即 我想使用JS / Jquery和Moment Timezone来做到这一点: 从每个项目中提取data-timezone-属性 将其提供给moment.tz()的实例, 并将元素与结果附加在一起,从
1回复

我想要日期范围选择器以及“DD/MM/YYYY”格式的输出数据

我希望日期范围选择器的格式为“DD/MM/YYYY”,并且在选择日期范围时也采用相同的格式,表格中的数据也应该采用相同的格式,当用户选择日期时,输出在数据中应以“DD/MM/YYY”格式显示。 <link rel="stylesheet" href="https://cdn.jsdelivr.