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

附言代码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));
?>

最佳答案

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

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


通过nnnnn,看来===对于javascript中的比较是有效的;因此,我唯一能想到的是output.msg是未定义的。由于===不会导致javascript错误,因此output.msg是唯一可能的其他事情。

10-04 14:13