2013-03-14 93 views
0

我的主要PHP页面是1个文本框形式。表单提交给自己并显示从数据库中提取的信息(machine.php?pc = workstation101)。php变量包含全局错误

也在这个页面上,我有一个单独的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,我会得到大量的“注意:未定义的索引:....”错误。当我重新加载DIV内容时,我已经将它缩小到$ _GET ['pc']不以任何形式传递。

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

想法?

+0

你几乎回答了你自己的问题可能会解决你的问题。你不会在你的查询字符串中使用你的jQuery代码传递'pc'。你的PHP期待着找到它。通知被抛出。 – datasage 2013-03-14 22:11:45

回答

0

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

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

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

+0

好的指针,谢谢。修正了我的JS中的两行.... $(“#pinger”)。load(“inc/ping.php?pc = <?php echo $ machinename?>”); – vashavoc 2013-03-14 23:26:48

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> 

请注意,这是未经测试并可能有语法错误......但