さて、私は自分が取り組んでいるプロジェクトのために小さなチャットシステムを書いています。その過程でAJAXを学ぼうとしてきましたが、すべて順調に進んでいるようです。私のAJAXはディレクトリを開くPHPページを実行し、AJAXはページからディレクトリを配列(DirectoryList)として受け取ります。次に、すべてのチャットログがDIVに追加されるまで、別のAJAX関数を繰り返しロードします。
私の問題は、ChatLogsが正しい順序でロードされないことです。
たとえば、ログがある場合:
- 1.txt
- 2.txt
- 3.txt
- 4.txt
それらは、ChatContainerDIVに次のように追加されます。
- 2.txt
- 1.txt
- 4.txt
- 3.txt
正しい順序の代わりに。
これが私のコードです:
var ChatList = new Array();
var p;
var DirectoryList = new Array();
var ChatString = '';
function loadChat(variable) {
var req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200) {
DirectoryList = JSON.parse(req.responseText);
var p = variable;
while (p < DirectoryList.length) {
loadLog(p);
p++;
}
}
}
//END REQ1
//Post Chat to DIV
function loadLog(p) {
$.get('chat/log/' + DirectoryList[p], function (data2) {
ChatList.push(data2);
$('#ChatContainer').append(data2);
});
}
//End
req.open('GET', 'process/ReadChatLogs.php', true)
req.send(null);
}
loadChat(0);