最後に、何度も試した後、私はそれをうまく機能させることができました。これは、最適な標準ソリューションである、長いポーリングajaxソリューションです。これはIE7で多くの問題を引き起こすので、以下にコードを貼り付けます。
まず、私のPHPファイル。これは、txtを読み取り、JSONをテキストとともにエコーします。
<?php
$commandFile = fopen("./command.txt","r");
fseek($commandFile, 0);
$command = fscanf($commandFile, "%s\n"); //reads the command
fclose($commandFile);
if($command[0] != "")
{
$commandFile = fopen("./command.txt","w"); //delete first line
fclose(commandFile);
echo json_encode($command[0]);
}
?>
ここで、HTMLメインページには、このPHPファイルを起動して回答をチェックする関数を再帰的に呼び出すメカニズムが必要です。私の機能はこんな感じです。
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<script type="text/javascript">
function longPolling()
{
$.ajaxSetup({ cache: false }); //This line is THE KEY to work under Internet Explorer
$.ajax({
type: "GET",
url: "loader.php",
dataType: 'json',
async: true,
success: function(response){
if(response!=""){
sendCommand(response); //could be any other function
}
//longPolling();
setTimeout(longPolling,1000);
},
error: function(){
//longPolling();
setTimeout(longPolling,1000);
}
});
};
$(document).ready(function(){ /*waits till the whole page loads*/
longPolling(); /*start the initial request*/
});
</script>
</body>