jQuery / PHP隐藏Div,从MySQL更新信息,显示Div新信息

时间:2011-03-07 05:40:31

标签: php jquery mysql refresh

jQuery的:

$(document).ready(function(){

    $(".reload").click(function() {
        $("div#update").fadeOut("fast")
        .load("home.php div#update").fadeIn("fast")
    });
});

PHP:

function statusUpdate() {

    $service_query = mysql_query("SELECT * FROM service ORDER BY status");
    $service_num = mysql_num_rows($service_query);

    for ($x=1;$x<=$service_num;$x++) {
    $service_row = mysql_fetch_row($service_query);

    $second_query = mysql_query("SELECT * FROM service WHERE sid='$service_row[0]'");
    $row = mysql_fetch_row($second_query);

    $socket = @fsockopen($row[3], $row[4], $errnum, $errstr, 0.01); 
    if ($errnum >= 1) { $status = 'offline'; } else { $status = 'online'; }

    mysql_query("UPDATE service SET status='$status' WHERE sid='$row[0]'")
    or die(mysql_error());

    ?>

    <ul><li style="min-width:190px;"><?php echo $row[1]; ?></li>
    <li style="min-width: 190px;" title="DNS: <?php echo $row[2]; ?>">
    <?php echo $row[3] . ':' . $row[4]; ?></li>
    <li class="<?php echo $status; ?>" style="min-width:80px;"><div id="update">
    <?php echo $status; ?></div></li></ul> 

    <?php

    } 
}

?>

<?php statusUpdate(); ?>

我有一个按钮,我按下(刷新),然后刷新#update id以希望fadeOut所有结果,然后淡入新结果...问题是它淡出它们没关系,但是当它把它们带回来,它只是div和div的div并且看起来非常混乱 - 没有做它的意图(必须上传图片以提供更多信息)。

简而言之,我想要发生的事情就是当你点击更新时,它们都将逐渐消失,然后用来自php的更新值淡入...我将php / mysql变成了一个函数,然后我可以调用当我点击那个刷新按钮时,认为这样可行,但我不知道该怎么做......

提前谢谢你,

菲利普。

4 个答案:

答案 0 :(得分:1)

Javascript

 $(document).ready(function(){

        $(".reload").click(function() {
            $("div#update").fadeOut("fast");
            $.ajax({
                 url:'home.php',
                 data:{type:'getStatus'},
                 type;'post', 
                 success:function(data){
                    $('div#update').html(data).fadeIn('fast');
                 }
            });       
        });
    });

php页面格式

<?php
$type= $_POST['type'];
if($type=="getStatus")
{
    //get statuses from data base and return only formatted statuses in html
}
else
{
   //your page codes here
   //like tags <html>,<body> etc, all regular tags
   //<script> tags etc
}
?>

答案 1 :(得分:1)

.load("home.php div#update").fadeIn("fast")

那是错的。你需要使用,

$('div#update').load('home.php', function(data) {
  $('div#update').html(data).fadeIn("fast");
});

通过直接调用并确认它正确返回结果,确保您的PHP文件正常工作。

参考:http://api.jquery.com/load

答案 2 :(得分:0)

试试这个

var $data = $('div#update');
$data.fadeOut('slow', function() { 
    $data.load('home.php div#update', function() { 
        $data.fadeIn('slow'); 
    }); 
});

答案 3 :(得分:0)

仅供参考,最好在同一目录中添加一个额外的页面(例如:phpcode.php)然后将你的php代码放在那里!然后试试这个:

var $data = $('div#update');
$data.fadeOut('slow', function() { 
    $data.load('phpcode.php div#update', function() { 
        $data.fadeIn('slow'); 
    }); 
});