php变量包含错误全局

时间:2013-03-14 22:05:07

标签: php jquery html refresh undefined

我的主要PHP页面是1个文本框表单。表单将提交给自己并显示从DB中提取的信息(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内容而无需外部页面?似乎找不到可以使用该方法的代码。

想法?

2 个答案:

答案 0 :(得分:0)

包含一个PHP页面并从浏览器中获取它是两个完全不同的东西。

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

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

答案 1 :(得分: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>

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