困惑...我有一个文件“api.php”,如下所示。这是在 jquery ajax 调用中调用的。当我从命令行运行它时,我得到一个看起来正确的响应(即不为空)。当我在 ajax 调用中运行它时,它似乎是空的。现在...当我注释掉“if($td < $lessthan)”和两个大括号时,它都可以正常工作(即,ajax 成功获得了正确的数据。
这是我的“api.php”函数:
$basedir = "calls/";
$now = time();
$lessthan = 20 * 60;
$ret = array();
$dir = opendir( $basedir );
while(($currentFile = readdir($dir)) !== false)
{
if ( preg_match( '/(.*).txt/', $currentFile, $match) )
{
$tt = @file_get_contents($basedir.$currentFile);
$td = ($now - @strtotime( $tt ));
if( $td < $lessthan )
{
$ret[] = $match[1];
}
}
}
closedir($dir);
echo json_encode(implode(',', $ret));
?>
这是我的 jquery ajax 调用:
$.ajax({
url: 'api.php',
data: "",
dataType: "json",
type: "POST",
success: function(data, textStatus, jqXHR)
{
console.log(data + ':' + previous + ' ' + textStatus );
if( data != null && data != previous && data != "" )
{ previous = data;
$('#other').hide(); //Set output element html
$('#loaddiv').fadeOut('fast').load('reload.php?q='+data).fadeIn("fast"); //Set output element html
}
if( (data == null || data == "" ) && previous != null ) {
//$('#loaddiv').fadeOut('fast').html('No Active Calls').fadeIn("fast"); //Set output element html
$('#loaddiv').fadeOut('fast'); //Set output element html
$('#other').show();
$('#other').fadeOut('fast').load('default.php').fadeIn("fast");
previous = null;
}
},
error: function(m) { alert('error'); }
});
关于为什么在 api.php 中注释掉“if”语句使整个事情起作用的任何想法?或者更好的是,我怎样才能保留 if 语句并让它工作。