次の処理でonClickを連続して10回発動させると、サーバ側(server.php)にPOST['count']が「0,3,2,1,5,4,8,9」の順で到達することがあります。
■javascript
var count = 0;
function clickevent(id) {
var sendData = new FormData();
sendData.append('count', ++count);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'server.php', true);
xhr.onload = function(event) {
if (event.target.status == 200) {
}
};
xhr.send(sendData);
}
■html
<img src="img/CA.png" id="xxxx" name="img" onClick="clickevent()">
非同期通信のため、到達順序が保障されませんので、「0,3,2,1,5,4」までは想定内なのですが、
途中の「6,7」が欠落していることが質問です。処理的に誤りがあるのでしょうか?
本件は、お客様の環境のみで発生しており、個人のネットワーク環境では「0,1,2,3,4,5,6,7,8,9」となって事象が発生しません。
ご意見、ご指摘をいただければ幸いです。よろしくお願いいたします。
実際のサイトが分からないと何とも、という感じですが、抜け落ちた「6,7」の応答がどうなってるかを確認した方が良いと思います。
xhr.onload = function(event) { if (event.target.status == 200) { ... } else { // ※ここ重要 } };
連続したリクエストをロボットとしてはじいているようなサイトもありますから、status と response を確認してみましょう。
(追記です)
いや、エラーのときとかがあるので、load じゃなくて loadend イベントを拾う方が良いかも。
https://developer.mozilla.org/ja/docs/Web/Events/loadend