Я использую jQuery.get
, чтобы выполнить запрос AJAX. Когда пользователь нажимает <a>
, я отправляю запрос на сервер через jQuery.get
, а затем обновляю <div id='aaa'>ajax call back here</a>
;
Однако, когда пользователь нажимает <a>
очень быстро, возвращать данные медленнее, чем при нажатии, и <div id ='aaa'></a>
не соответствует тому, что хранится в базе данных.
Например, <div id='aaa'>10</div>
, -1, когда пользователь щелкает 1 раз. Пользователь нажимает 5 раз, и #aaa
должно быть <div id='aaa'>5</div>
, но поскольку пользователь нажимал очень быстро, div показывает <div id='aaa'>8</div>
. База данных сервера была обновлена до 5
, и когда пользователь щелкнет еще раз, <div id='aaa'>8</div>
будет преобразован в <div id='aaa'>4</a>
, потому что на стороне сервера 5
.
Я знаю, что это касается AJAX сетевой запрос займет какое-то конечное время.
Итак, возможно ли, что моя функция подождет, пока jQuery.get
не будет выполнено и завершится, а затем сможет только щелкнуть / обработать снова. Я попробовал кодировку ниже, но все равно проблема с вышеупомянутым.
var isPending = false
function fastbtn(sid, t) {
if (isPending)
return;
goodget('', 'plugin.php?id=ttt&do=realland&ac=' + sid + '&click=true');
}
function goodget(url, rid) {
isPending = true;
jQuery.get(url, function(data, status) {
ajaxget(rid); //this ajaxget is my program core template language, ajaxget(url,WaitId), return as XML format;
})
.done(function() { // <--only fires on success
//alert('ok2');
})
.fail(function() { // <-- only fires on error
})
.always(function() { // <-- this always fires
isPending = false;
});
}
<a href="javascript:;" onclick="fastbtn('watering')">some div ...</a>
Вы увидите, что нумерация прыгает. .