【问题标题】:Refresh PHP functions with JavaScript用 JavaScript 刷新 PHP 函数
【发布时间】:2013-08-22 05:40:23
【问题描述】:

我需要一个可以刷新功能的脚本:

$ping, $ms

每 30 秒,显示一个计时器, 我基本上得到了这个脚本:

window.onload=function(){
var timer = {
        interval: null,
        seconds: 30,

        start: function () {
            var self = this,
            el = document.getElementById('time-to-update');

            el.innerText = this.seconds;

            this.interval = setInterval(function () {
                self.seconds--;

                if (self.seconds == 0) 
                    window.location.reload();

                el.innerText = self.seconds;
            }, 1000);
        },

        stop: function () {
            window.clearInterval(this.interval)
        }
}

timer.start();
} 

但它刷新了整个页面,而不是我希望它刷新的功能,所以,任何帮助都会得到帮助,谢谢!

编辑: 我忘了提到脚本必须无限循环

【问题讨论】:

  • 要让 PHP 参与任何基于客户端 JavaScript 的事情,而不刷新整个页面,需要Ajax
  • 噗,嗯,帮了大忙……
  • 为什么要刷新$ping, $ms它们的用途?
  • 检查这些功能正在ping的服务器是在线还是离线

标签: php javascript html refresh


【解决方案1】:

这里会重新加载整个页面:

window.location.reload();

现在您似乎想要做的是重新加载页面的某些部分,这些部分是由 php 函数生成的。不幸的是 php 是服务器端的,所以这意味着你不能让客户端浏览器运行 php。您的服务器运行 php 以生成浏览器可以理解的内容。在网络浏览器中打开您使用 php 创建的页面并选择查看源代码,您就会明白我的意思了。

这是您需要做的:

  1. 让你的两个函数 ping 和 ms 可以通过 ajax 访问
  2. 而不是window.location.reload() 调用jQuery.ajax。成功后写入您的页面

我认为这是处理这个问题的理想方法......我还没有看到你的问题的 php 方面,但无论如何:

  1. 创建一个名为 ping.php 的文件并将所有 ping 函数代码放入其中。 ms 同上
  2. 在调用这些函数的原始 php 文件中,在您想要调用函数的每个点创建一个 div。给他们适当的ID。例如:“ping_contents”和“ms_contents”

    如果需要,您可以使用一些初始数据填充它们。

  3. 在你的 js 中加入如下内容:

    jQuery.ajax(
    {
        url     : url_of_ping_function,
        data    : {anything you need},
        type    : 'POST', //or 'GET'
        dataType: 'html',
        success : function(data)
        {
             document.getElementById("ping_contents").innerHTML = data;
        }    
    });
    

为另一个功能再做一个

【讨论】:

  • 嗯。阿贾克斯?查看该页面的来源。它没有嵌入 php,因为那根本行不通。每 10 秒发送一个 ajax 查询以获取必要的数据。
  • 如果你打开 firebug 或者你的浏览器的等价物然后你可以看到当小计时器用完时会发生什么。他们正在使用 ajax 获取 json。就是这样。这是一种非常标准的技术
  • @IliyaGolik 它主要是用于client-side debugging and inspection 的 Firefox 插件。 Firefox 现在也内置了调试器,大多数其他现代浏览器(IE8+、Chrome、Safari 等)也是如此。通常,点击F12 将打开它们。或 Firefox 中的 Ctrl+Shift+K
【解决方案2】:

你想要的是AJAX异步 JavaScript 和 XML

您可以为此使用jQuery

我可以在这里举一个例子,但是在互联网上可以找到很多信息。过去我编写了自己的 AJAX 代码,但自从我开始使用 jQuery 后,一切都变得简单了很多。查看我提供的 jQuery 链接。有一些有用的信息。这个示例代码可能是最容易解释的。

$.ajax({
  url: "test.php"
}).done(function() {
  alert("done");
});

某个时刻,例如点击一个按钮,文件 test.php 被执行。完成后,会显示一个带有“完成”文本的警告框。这是基本的。

【讨论】:

    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多