echo "<Script language='JavaScript'>alert('数据检测已完成!');</Script>";
echo "<Script language='JavaScript'>location.href='pmf_rkno_query.php'</Script>";
sleep(10);
mysql_query("delete from `".$p."` where rkno = '".$rkno."'");
我的想法是返回对应页面后再进行数据库删除操作。现在代码的效果是等待10秒,删除数据,但是还是停留在当前页。请问哪里出了问题?

解决方案 »

  1.   

    可能是服务器缓存了输出
    flush(); // 清除缓存
    sleep(10);
      

  2.   

    应该不是缓存的问题,我刚才试了,是不是顺序有问题?如果把数据库操作代码注释掉,程序能跳出javascript效果。我猜测是先执行了数据库操作,结果数据清空了,就无法执行javascript代码了?
      

  3.   

    flush(); // 推出缓存
    这是必要的,对于ie兼容浏览器还需发送累计256字节以上内容才会被执行,除非程序结束不过你的这个写法存在风险
    一旦 <Script language='JavaScript'>location.href='pmf_rkno_query.php'</Script>
    被执行,就相当于用户终止了当前程序的连接,而php默认会终止当前程序的执行,你的
     mysql_query("delete from `".$p."` where rkno = '".$rkno."'"); 
    也就没有机会执行了
      

  4.   

    加上这些呢???另外不同浏览器是有差异的,,chrome就不一定行得通
    ini_set('output_buffering','on');
    ini_set('zlib.output_compression', 0);echo "<Script language='JavaScript'>alert('数据检测已完成!');</Script>";
    echo str_pad(" ", 1024);
    ob_flush();
    flush();
    sleep(10);
    mysql_query("delete from `".$p."` where rkno = '".$rkno."'"); 
    ……
      

  5.   


    感觉是php先执行了(删除数据部分),javascript而后才执行。结果是数据被删除了,javascript就不执行了。我贴出这段执行的代码吧。可能在输出上有些问题。 if($row_num == $row_num2)
    {
    $rust = mysql_query("select * from `".$p."` where rkno = '".$rkno."'");
    while($row3 = mysql_fetch_array($rust))
    {
    $hl_user = $row3['hl_user'];
    $hl_status = $row3['hl_status'];
    $pm_status = $row3['pm_status'];
    }
    $date = date('Y-m-d H:i:s');
    $sql4 = "INSERT INTO  `".$t."` (`rkno`,`hl_status`,`hl_user`,`pm_status`,`pm_user`,`date`)";
    $sql4 .= "VALUES ('".$rkno."','".$hl_status."','".$hl_user."','".$pm_status."','".$account."','".$date."')";
    mysql_query($sql4);
    echo "<Script language='JavaScript'>alert('数据检测已完成!');</Script>";
    echo "<Script language='JavaScript'>location.href='pmf_rkno_query.php'</Script>";
    mysql_query("delete from `".$p."` where rkno = '".$rkno."'");
    }最后3句存在执行问题。
      

  6.   

    我查看过了数据库,数据插入有被执行,删除操作也被执行了。但是javascript没执行,如果注释掉删除的那一行,数据插入,javascript能正常执行。
      

  7.   

    解决了。不过也弄清了一个问题,php先执行,再执行javascript。