問題があり、それは次のとおりです。キーアップイベントの実行後に連絡先を検索するテキストボックスがあります。スクロールでページネーションも使用するため、連絡先がdivに追加されます。キーアップイベントの後、そのdivのコンテンツが消去されて置き換えられます新しいコンテンツを使用しますが、これはゆっくり書くと発生します。非常に速く書くと、コンテンツは置き換えられず、既存のコンテンツに追加され、同じレジスタが繰り返されるためです。おそらく ajax が非同期であり、その後キーアップするたびに、リクエストを実行したままになります。
コード
var paginam = 1;
$('div.dvusuarios').scroll(function() {
if ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) {
paginam++;
listcontactosmsj($('#txtbuscaamgcon').val(), paginam);
}
});
function listcontactosmsj(contacto, paginam) {
$.ajax({
type: 'GET',
url: "<? echo PUBLIC_PATH . 'message/selcontacts' ?>",
data: 'contacto=' + contacto
+ '&pagina=' + paginam
}).done(function(data) {
$('div.dvusuarios').append(data);
});
}
listcontactosmsj('', 1);
$('#txtbuscaamgcon').keyup(function() {
paginam = 1;
$('div.dvusuarios').html('');
listcontactosmsj($(this).val(),paginam );
});
私はこのようにそれを解決しようとしましたが、これはうまくいきません
$('#txtbuscaamgcon').keyup(function() {
paginam = 1;
$('div.dvusuarios').html('');
var refrescar = setInterval(listcontactosmsj($(this).val(),paginam), 5000);
$.ajaxSetup({cache: false});
});
ソース コードの何が問題なのかわかりませんが、mysql および php スクリプトのクエリは問題ありません。