1

我在一个文件中有一个脚本,它每 30 秒HTML运行一个文件。phpphp文件旨在更改 div 的 innerHTML。我似乎没有找到替换它的方法。

我正在使用load(),但有几个divs 我想每 30 秒更新一次,我不想让服务器 GET 那么多请求。所以我正在寻找一个只php获取然后更改那几个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文件中获取元素。我不知道如何解决这个问题......任何建议都将不胜感激!

4

2 回答 2

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 调用设置无缓存选项。

于 2013-05-14T04:04:52.190 回答
1

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

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

希望有帮助:)

于 2013-05-14T03:49:47.990 回答