【问题标题】:Ajax Call to Load Current Time [closed]加载当前时间的 Ajax 调用 [关闭]
【发布时间】:2013-07-27 18:45:28
【问题描述】:

我需要从 ajax 请求中调用代码,此调用是针对当前时间的。我不知道该怎么做,我设置了一个带有工作时钟的 html 文件。我调用的页面没有显示它从 $container1 加载文本的时钟,但没有显示时钟和日期?有谁知道为什么?如果容器 1 中的文本加载正常,为什么当前时间和日期时钟不工作?

这是我目前在 html 中获取数据的内容。

var mydate=new Date()
var year=mydate.getYear()
if (year < 1000)
year+=1900
var day=mydate.getDay()
var month=mydate.getMonth()
var daym=mydate.getDate()
if (daym<10)
daym="0"+daym
var dayarray=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
var montharray=new Array("1","2","3","4","5","6","7","8","9","10","11","12")
var date=new Date();
var hours=date.getHours();
var minutes=date.getMinutes();
 var ampm = hours >= 12 ? 'PM' : 'AM';
  hours = hours % 12;
  hours = hours ? hours : 12;
minutes = minutes < 10 ? '0'+minutes : minutes;
var s=date.getSeconds();
s = s < 10 ? '0'+s : s;
var Time = "Current Time:&nbsp;  ";
var Text = "Last Updated:  ";

      document.getElementById('time').innerHTML =Time+" "+dayarray[day]+" "+montharray[month]+"/"+daym+"/"+year+" "+hours+":"+minutes+":"+s+" "+ampm; 
document.getElementById('time2').innerHTML =Text+" "+dayarray[day]; 
}
}
</script>
</head>
<body>
<div id="container1">
<div id="left">By TrueLogic Company
    <p>Edited By International Electronic Components</p>
</div>
<div id="right">
    <div id="time2"></div>[LastBuuild]
    <p>
        <div id="time"></div>
    </p>
</div>
</div>
</body>
</html>

在我希望它加载到的页面中,我尝试了几种方法,但这就是我现在所拥有的。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
<script type="text/javascript">

function refreshPage () {
     var page_y = document.getElementsByTagName("body")[0].scrollTop; 
     window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y;

}
     window.onload = function () {
         setTimeout(refreshPage, 3000);
            if (window.location.href.indexOf('page_y') != -1 ) {
                var match = window.location.href.split('?')[1].split("&")[0].split("=");
                document.getElementsByTagName("body")[0].scrollTop = match[1];

    }

{
     $('#container').load('C:/Program%20Files/TrueChem/Data/dashboard/src/Test.HTML #container1');
  }
}
</script>

<div id="container">

【问题讨论】:

  • 你能删除所有不相关的代码吗?没有人愿意阅读所有这些内容。
  • 只向我们展示您遇到问题的代码。
  • 尝试清除不必要的代码,但我不太确定那是什么。
  • 所以,感谢大家在我的问题上按下向下按钮,这真的对我有帮助走错路了!

标签: javascript html css ajax


【解决方案1】:

这里有 很多 不必要的代码,但如果我猜的话,我会说问题是这样的:

$('#container').load('C:/Program%20Files/TrueChem/Data/dashboard/src/Test.HTML #container1');

您正在尝试通过 JavaScript 从本地文件系统加载文件。出于明显安全原因,这将不起作用。 (想象一下是否有任何网站可以访问您的本地文件。)

当您使用浏览器调试工具时,这是否会尝试发出 AJAX 请求?它会抛出错误吗? (我猜测/希望是后者。)

您的 AJAX 请求需要发送到一个 HTTP 主机(基本上是一个 Web 服务器),它会响应相关数据。 JavaScript 无法加载本地文件。

编辑:根据下面的评论线程,听起来问题的核心是您试图通过 AJAX 从另一个页面加载它来在一个页面上运行一些 JavaScript 代码。这可能行不通。该页面实际上具有您要查找的值,它具有生成该值的代码。当您通过 AJAX 获取代码时,该代码可能不会被执行。

但是,由于您需要的是代码而不是页面内容,因此您甚至不应该真正通过 AJAX 加载页面。您应该将代码放在单独的文件中,并在两个页面上引用该文件。

只需将 JavaScript 代码移动到 .js 文件中并在两个页面上引用该文件即可:

<script type="text/javascript" src="dateTimeCalculations.js"></script>

这将使您能够访问生成该值的代码,并且您可以将该值填充到页面上的元素中。

【讨论】:

  • 那行不通我不能使用http,因为这些不是网站,它们是一个软件的浏览器表示。它是一个仪表板。代码有效,它提取数据它只是没有提取所有数据,时间不起作用,但其余部分是?
  • 我是用记事本写的,所以据我所知,我没有浏览器调试工具。
  • @chrisw.iec: "I can't use a http because these aren't websites" - 如果这应该是一个本地应用程序,那么它应该写成一个。您正在使用专为浏览器内 Web 应用程序设计的 HTML/JavaScript。 "the time isn't working but the rest is" - 你能说得更具体些吗?它以什么方式失败?对那个文件的 AJAX 请求真的成功了吗?这里有很多与问题无关的额外代码,因此您需要帮助我们缩小范围。 "I don't have browser debugging tools" - 如果您不是在浏览器中查看此网页,您在查看它是什么?
  • Ajax 请求的工作原理是获取数据并发布,除了加载时间。 By trueLogic and and Edited by INinternational Electronic Components的帖子,而时间没有。
  • 我尝试清除不必要的代码,但不知道那是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多