DIV容器保持空白

时间:2012-08-12 11:53:18

标签: php javascript ajax json

我需要每5秒运行一次函数find_optimal_schedule(),每次更新DIV容器schedule。以下是我的代码段。问题是alert("Init")已执行,而alert("True")alert("False")未执行。 FireBug显示optimize.php每5秒运行一次,但我不明白为什么DIV容器的内容始终保持空白。

P.S。代码gantt.php正常工作,因为我在没有计时器的情况下在DIV容器中测试它,并且正确显示了甘特图。因此,我不在此提供此代码,因为情况并非如此。

scheduler.php

<script>
window.setInterval(function(){                 
     find_optimal_schedule();
}, 5000);
</script>

<script>
function find_optimal_schedule() {
    $.ajax({
        url: 'modules/mod_scheduler/pages.php?page=optimize.php',
        dataType: 'json',
        success: function(output){
            alert("Init");
            if(output.msg === 1){
                alert("True");
                $('#schedule').html(output.html);
            } else {
                alert("False");
                return false;
            }
        }
    });
}
</script>

<div style="width:100%; height:350px; position:relative" id="schedule" class="schedule"></div>

pages.php

<?php
    @session_start();

    @$pag_mod = $_GET['pag_mod'];

    if(!isset($pag_mod))
        $pag_mod = 0;

    if (isset($_GET['pag_mod'])) {
        include 'modules/mod_scheduler/'.$_GET['pag_mod'];
    }
    else {
        include 'modules/mod_scheduler/scheduler.php';
    }
?>

optimize.php

<?php
//  Dispay Gantt chart
$html_code = '<img src="modules/mod_scheduler/gantt.php">';

echo json_encode(array('msg' => 1, 'html' => $html_code)); 
?>

3 个答案:

答案 0 :(得分:3)

我相信你应该将output.msg与==而不是===进行比较。

if(output.msg == 1){
    alert("True");
    $('#schedule').html(output.html);
} else {
    alert("False");
    return false;
}

通过nnnnn,===似乎对javascript中的比较有效;因此,我唯一能想到的是output.msg是未定义的。由于===不会导致javascript错误,因此output.msg是唯一可能出现的错误。

答案 1 :(得分:2)

您使用严格相等运算符(===)代替相等

这意味着除了值之外,如果数据类型被认为是相等的,则比较为真;也许output.msg以字符串形式出现,并不等同于数字。尝试==代替。

答案 2 :(得分:1)

尝试

console.log(output)

查看输出是否为有效对象。 Firebug应该向你展示整个物体的所有特性。