0

我的主要 PHP 页面是一个 1 文本框表单。表单提交给自身并显示从数据库中提取的信息 (machine.php?pc=workstation101)。

同样在这个页面上,我有一个单独的 ping.php 包含,它将每 60 秒 ping 一次搜索的机器。这被放置在一个 div 中,jQuery 自动刷新这个外部 ping.php 页面。

如果我禁用 jQuery 刷新代码(如下所示)...

<script>
 $(document).ready(function() {
      $("#pinger").load("inc/ping.php");
      var refreshId = setInterval(function() {
        $("#pinger").load('inc/ping.php');
      }, 60000);
    $.ajaxSetup({ cache: false });
  });
</script>

...包含文件工作正常。显示正确的 ping 状态。但是,我必须使用 $GLOBALS['variable'] 从父 index.php 页面访问变量。但是当我这样做时它工作正常。

现在,如果我启用刷新 jQuery,我会收到大量“注意:未定义索引:....”错误。我已将其范围缩小到 $_GET['pc'] 在重新加载 DIV 内容时不会以任何形式传递。

它作为一个包含。作为 jQuery 加载页面失败。也许我可以将包含页面编码到索引页面中并在没有外部页面的情况下刷新 div 内容?似乎找不到适用于该方法的代码。

想法?

4

2 回答 2

0

包含一个 PHP 页面和从浏览器中获取它是两件完全不同的事情。

当您告诉 jQuery 加载 inc/ping.php 时,就好像您在另一个浏览器窗口中加载了该页面一样。原来的 PHP 页面已经完成,它的变量不再存在。

在这种情况下,您只需要构造一个类似 /dynamic/ping.php?pc=foo 的 URL 并加载它。

于 2013-03-14T22:12:24.973 回答
0

我不完全确定您要达到的目标,我无法发表评论,但 jquery 看起来不正确。首先我假设您想将文本框的值传递给 PHP 后端?

在脚本中试试这个:

<script>
    function ping(){
        $.ajax("inc/ping.php?pc="+encodeURIComponent($("#your_textbox_id").val()),{})
            .success(function(data)){
                // Your php return values are here
            }).fail(function(error){
                // alert('somthing went wrong');
            })
        });
        window.setTimeout("ping()", 60000);
    }

    $(document).ready(function(){
        ping();
    });
</script>

请注意,这是未经测试的,可能有语法错误......但可能会解决您的问题

于 2013-03-14T22:21:39.817 回答