我的主要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内容而无需外部页面?似乎找不到可以使用该方法的代码。
想法?
答案 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>
请注意,这是未经测试的,可能有语法错误......但可能会解决您的问题