2013-05-14 112 views
0

我在每30秒运行一次php文件的HTML文件中有一个脚本。 php文件旨在更改div的innerHTML。我似乎找不到替代它的方法。从外部php文件更改innerHTML

我正在使用load(),但有几个div s我想每30秒更新一次,我不想让服务器获得那么多请求。所以我在寻找一个只有php GET,然后改变这些数的div的innerHTML

这就是我的了:

HTML

<script type="text/javascript"> 
$(document).ready(function() { 
    $.get('php.php'); 
}); 
setInterval(function(){ 
    $.get('php.php'); 
}, 30000); 
</script> 

<div id="foo"></div> 

php.php

document.getElementById("foo").innerHTML = '<?php 
// some php code 
?>'; 

我认为问题是我无法从父HTML文件中获取元素。我不知道如何解决这个问题... 任何建议将超过aprecciated!

回答

2

您重塑jQuery的load()

function fetchContent() { 
    $("#foo").load('php.php'); 
    window.setTimeout(fetchContent, 30000); 
} 
$(fetchContent); 

服务器应该只返回所需的HTML内容显示。


编辑

由于您的评论是从原来的问题不同。

function fetchContent() { 
    $("#foo").get('php.php', function(data) { 
     var html = $("<div/>").html(data);    
     $("#foo").html(html.find("#Section1").html()); 
     $("#bar").html(html.find("#Section2").html()); 
     $("#asd").html(html.find("#Section3").html()); 
     window.setTimeout(fetchContent, 30000); 
    }); 
} 
$(fetchContent); 

您想添加一个onError处理程序,并且可能需要为Ajax调用设置no cache选项。

+0

......我使用'load()',但有几个'div'我想每30秒更新一次,而且我不想让服务器获得那么多的请求。所以我正在寻找一个只有'php'获取,然后更改这些divs中的innerhtml – fpolloa 2013-05-14 04:09:15

+0

这将有助于如果这是从一开始就在您的信息! – epascarello 2013-05-14 04:10:16

+0

对不起:s!我更新了这个问题......你能帮我吗? – fpolloa 2013-05-14 04:13:00

1

你可能想要的是你的php.php返回一些数据,然后你使用$ .get的成功来更新你的#foo;采取从http://api.jquery.com/jQuery.get/一个例子,并修改它为你的榜样

$.get("php.php", function(data) { 
    $('#foo').html(data); 
}); 

希望帮助:)

+0

我不太明白你说什么......我知道编码。我试图在div中打印以下内容document.getElementById(“foo”)。innerHTML ='<? $ line1 = file_get_contents('example/foo.txt');打印htmlentities($ line1);?>';' – fpolloa 2013-05-14 03:56:36

+0

我不知道如何导出数据'$ line1'用于函数 – fpolloa 2013-05-14 03:57:16

+0

我应该使用'var_export'吗? – fpolloa 2013-05-14 04:01:22