を実行するためにfailes JavaScriptのAJAX:時々私は、次のAjax機能使用してい
function callAjax(request,callback)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(callback != null)callback(xmlhttp.responseText);
}
}
xmlhttp.open("GET",request,true);
xmlhttp.send();
}
をそして私は、私は順番に3回以上、この関数を呼び出すときに、コールバックの一部が時々ではないことを発見しました実行される。 ajaxリクエストが発生し、結果が返されますが、何とかコールバック関数が呼び出されません。さらに悪いことに、これは一貫して起こることさえありません。私が知りたいことは、なぜですか?さらに重要なことは、どうすれば修正できますか?私が知る限り、それらの間に少なくとも4ミリ秒のギャップがあれば、コールバックが実行されます。その期間内に2つのページが返ってくると、そのうちの1つだけ(私は信じていますが、それがいつも確実ではないと思います)が実際に処理されます。
私はこれを回避するために、一度に1つのAjaxリクエストが(スリープ()のリベラルな使用を通じて)戻るのを待っていることを確認することができます。ただし、これによりページが大幅に遅くなります。私は、3つ(またはそれ以上)の要求をすべて消して、彼らが戻るたびにコールバックを実行させたいと思っています。
私は間違っていますか? どうすればいいですか?
NB:「ああ、あなたはjqueryを使うべきだ」と言ってくれる人は探していません。私はこれのために外部ライブラリを使用したくない - ちょうど私が持っているコードを修正する方法を教えてください。
GETではなくPOSTで同じことが起こりますか? – Pieter
@Pieterはい、POSTとGETの場合と同じ結果 – Benubird