困惑しています...以下に示すファイル「api.php」があります。これは、jquery ajax 呼び出しで呼び出されます。コマンド ラインから実行すると、正しいように見える (つまり、空ではない) 応答が返されます。ajax 呼び出しで実行すると、空に戻ったように見えます。今...「if( $td < $lessthan )」と2つの中括弧をコメントアウトすると、すべて正しく機能します(つまり、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 ステートメントをそのままにして、それが機能するようにするにはどうすればよいでしょうか。