在该div </div>中仅重新加载<div>和php代码

时间:2014-07-21 13:48:10

标签: javascript php ajax codeigniter

我在名为home.php的页面中有以下代码。

<div class="Wrapper-notify" id="Wrapper-notify">
           <?php  echo rand(10,100); ?>
    </div>

如何在常规时间间隔内仅重新加载此div和php代码。 (我正在使用codeigniter框架)请帮助

7 个答案:

答案 0 :(得分:1)

PHP在服务器端进行评估,因此您需要调用服务器以重新评估PHP表达式。考虑到您的PHP似乎唯一要做的就是生成一个随机数,并且根据您要完成的整体内容,您可以考虑使用Javascript来“刷新”div。你可以这样做:

// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}


function refreshDiv() {
    var divObj = document.getElementById("Wrapper-notify");
    var randNum = getRandomInt( 10 , 100 );
    divObj.innerHTML = String( randNum );
}

setInterval( "refreshDiv()" , 2000 );

以上Javascript将每隔2秒更改一次div内的数字。

答案 1 :(得分:0)

你可以使用AJAX,

  1. 您定义了一个与您的服务器通信以获取数据的功能。

    $(&#39; div#Wrapper-notify&#39;)。加载(&#39; http://yoursite.com #newContent&#39;);

  2. 使用功能设置时间间隔,并在如下常规时间段内调用。

    setInterval(function(){        $(&#39; div#Wrapper-notify&#39;)。load(&#39; http://yoursite.com #newContent&#39;);     },6000); //每6000毫秒

答案 2 :(得分:0)

我想你可以用AJAX做到这一点。在Javascript中执行setInterval每隔x秒执行一次函数。该函数应该通过AJAX调用您的PHP文件并将响应传递给您的DIV。 PHP文件应该只包含

<?php  echo rand(10,100); ?>

这种方法对于你可能想要达到的目标而言可能有些过分。

答案 3 :(得分:0)

我只看到一个简单的解决方案,ajax在一个时间间隔内调用php并将响应推送到容器中:

这是一个使用jQuery的例子:

setTimeout(function() {
    $.get('/my/page', function(data) {
      $('#my_container').html(data);
    })
}, 3000);

答案 4 :(得分:0)

如果你只需要10到100之间的随机数,就不需要php ...你只需要一些javascript:jsFiddle

window.onload=function()
{
    setInterval(function(){
    document.getElementById("Wrapper-notify").innerHTML = parseInt((Math.random()*100)+10);
    },1000);
};

如果你正在使用一些jQuery,你可以使用它:jsFiddle

$(document).ready( function() 
    {
        setInterval(function(){$("#Wrapper-notify").html(parseInt((Math.random()*100)+10))},1000);
    });

答案 5 :(得分:0)

你应该首先创建一个.php页面,让我们说test.php打印这样的数据:

<?php
    echo rand(10,100);
?>

您可以使用此代码从您的网页加载数据,这是纯粹的javascript

function getValue()
{
    if (window.XMLHttpRequest)
        AJAX=new XMLHttpRequest(); 
    else
    AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    if (AJAX)
    {
        AJAX.open("GET", "test.php", false);
        AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        AJAX.send();
        return AJAX.responseText;                                         
    } 
    else
        return null;
}
window.onload=function()
{
    setInterval(function(){
    document.getElementById("Wrapper-notify").innerHTML = getValue();
    },1000);
};

但是,如果您使用的是jQuery,则可以使用.get方法从服务器加载数据

$(document).ready( function() 
{
    setInterval(function(){ changeDiv(); },1000);
});
function changeDiv()
{
    $.ajax({
         url: "test.php",
         success: function(result)
         {
            $("#Wrapper-notify").html(result);
         }
    });
}

答案 6 :(得分:-1)

  1. 您需要创建新操作,该操作仅输出从10到100的rand编号。让我们调用它,例如get_rand_num_action:

    public function get_rand_num_action(){     return mr_rand(10,100); }

  2. 在您的视图中(您有Wrapper-notify div),在或者在标签的末尾为您的get_rand_num_action创建新的ajax请求

  3. 从get_rand_num_action响应中收集数据并使用本机JS或jQuery更新您的Wrapper-notify div:

        function changeWrapperDiv(){         $ .ajax('/ controller / get_rand_num_action',{             成功:功能(响应){                 $( “#包装-通知”)文本(响应)。             }         });     }
    // Change div every 5 seconds
    setInterval(5000, changeWrapperDiv)
    
  4. 希望这会对你有所帮助。