Я пытаюсь выяснить вызов ajax ... Мне нужен вызов, чтобы задержать и закончить загрузку содержимого HTML, прежде чем переходить еще раз (он запускается событием keyup) ... В противном случае возвращенный HTML фактически загружен много раз. В моем случае вызов ajax возвращает HTML, который затем выполняет JS-функцию. Но когда он загружается несколько раз, функция JS выполняется дважды = плохо.Ajax звоните, чтобы завершить успех, прежде чем на самом деле завершить вызов?
Вот мой код (бдительные коробки только для помощи ...):
$(document).ready(function() {
var isProcessing = false;
$('#productSearchInput').keyup(function() {
var productSearchInput = $(this).val();
var dataString = 'searchInput='+ productSearchInput;
var script_url = '../ajax/service-search.php';
if(productSearchInput.length > 3 && isProcessing === false) {
$.ajax({
type: 'GET',
url: script_url,
data: dataString,
beforeSend:
function() {
isProcessing = true;
alert('Processing input: ' + productSearchInput;
},
success:
function(server_response) {
$('#searchresultdata').html(server_response).show('fast', function() { alert('Currently processing...'); });
},
error:
function() {
alert('ajax call failed...');
},
complete:
function() {
isProcessing = false;
alert('Processing done');
}
});
}
return false;
});
});
Что плохого в том, что «Обработка сделано» предупреждение появляется перед «Жди обработки» предупреждение .. . Затем после предупреждения «Обработка сделана» появляется предупреждение «Ожидать обработки».
мне нужен мой HTML server_response, чтобы показать, до завершения вызова и настройки isProcessing = ложь; ...
Как достичь этого?
Именно там я начал;) Причина, почему мне нужен вызов ждать HTML для загрузки, является то, что Somtimes I Сканирование штрих-кода. Когда я просматриваю штрих-код, HTML никогда не загружается, прежде чем он снова исчезнет. Затем я могу нажать случайный ключ, потому что вызов ajax запускается с помощью keyup - который затем считывает цифры, которые я просматривал. Я попытался установить barcodescanner с ENTER как терминатором, но все это происходит слишком быстро - поскольку HTML еще не загружен. – EibergDK
Возможно, вы можете предоставить более подробную информацию или пример на jsfiddle, чтобы пользователи могли воспроизвести вашу проблему? Может быть, 'xhr.abort()' или 'setTimeout' может помочь избежать чрезмерных вызовов ajax/перезагрузки контента? – Inferpse
Если я сделаю простой пример, все в порядке ... .php Я загружаю HTML из, конечно, включает в себя запросы mySQL. Я уверен, что мой вызов ajax завершен быстрее, чем запросы mySQL в моем PHP-файле, что заставляет вызов ajax начинать заново, пока не возвращается какой-либо HTML-код ... – EibergDK