1

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

PS 代码gantt.php工作正常,因为我在没有计时器的 DIV 容器中对其进行了测试,并且甘特图显示正确。因此,我在这里不提供此代码,因为事实并非如此。

调度程序.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';
    }
?>

优化.php

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

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

3 回答 3

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 是唯一可能的其他内容。

于 2012-08-12T11:55:41.820 回答
2

您正在使用严格的相等运算符 (===) 而不是相等

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

于 2012-08-12T11:59:17.630 回答
1

尝试

console.log(output)

查看输出是否为有效对象。Firebug 应该向您展示整个对象及其所有属性。

于 2012-08-12T12:03:24.487 回答