私はこの長いポーリングスクリプトを機能させようとしてきましたが、行き詰まり続けています。今回はサーバーへのajaxリクエストに問題があります。データを提供するphpスクリプト(ループとスリープを使用してロングポールを実行する)は完全に正常に機能しますが、私のjQueryスクリプトは機能しません。
これまで、通常の$.ajax()
リクエストと$.post()
スクリプトへのリクエストを使用してみましたが、そうするとスクリプト全体が停止します。スクリプトは実際には想定どおりに読み込まれますが、ページには読み込みが続くことが示されています(google chromeを使用すると、画面の下部に「待機中」バーが表示されます)。phpスクリプトで60秒間タイムアウトした後、データが見つからなかったため、jQueryスクリプトは「false」を受け取ります。次に、スクリプトはデータagianを要求することになっています。
私の質問は、ブラウザがバックグラウンドで何かをロードしていることを表示しないようにするにはどうすればよいですか?私のサーバーは共有サーバーであるため、サーバー自体に何かをインストールすることに関してはアクセスできません。したがって、これはjavascript(jQuery)とphpのみを使用して解決する必要があります。
編集:Internet Explorerでスクリプトをチェックアウトしたところ、スクリプトが読み込まれている兆候は見られないようですが、GoogleChromeではまだ問題があります
編集いくつかのコードを投稿する:
これは私のjavascriptファイルです:
if($("#interestboard"))
{
var lasttime = $("#lasttime").val();
var pollurl = $("#pollurl").val();
lpStart();
}
function lpStart()
{
$.ajax({
type: "GET",
url: pollurl+lasttime,
async: true,
cache: false,
success:function(data)
{
alert(data);
},
error: function()
{
alert("Something went wrong");
}
});
}
もちろん、これは$(document).ready()
私のphpスクリプトは次のようなものです。
while(time()-$time<60)
{
$this->class = $class["id"];
$this->orderBy("timestamp");
$this->_extraConditions = "`timestamp`>'$lastTime' AND ";
$result = $this->search();
if($result)
return $result;
usleep(250000);
clearstatcache();
}
Firebugを(Google Chromeで)使用すると、リクエストが行われたことだけが表示され、コンソールのGET文字列の最後に通常の読み込みアイコンは表示されません。Firefoxでは、リクエストが保留中であること(読み込みアイコンが表示されていること)も表示されますが、少なくともブラウザはページが読み込まれているようには動作しません。
ありがとう...