У меня есть сценарий jQuery, чтобы получить некоторую информацию из внешнего источника (ajax), и при этом должно появиться изображение загрузчика. JQuery, похоже, не нравится, потому что строка не выполняется. Во время выполнения вход должен быть отключен, но этот код пропускается.jquery, кажется, пропускает некоторые строки кода
Мой JQuery код:
$("#pnum").keyup(function(){
nieuw = $(this).val();
code = $('#pnum').val();
$("#pnum").css("background-color", "#FFC080");
if (oud != nieuw && option != 0 && code.length >= 1 && code.length <=4) {
$("#loaderImage").show();
$("input").prop('disabled', true);
$("#mode").prop('disabled', true);
$('#pnumTable').empty();
if (code.length >= 1) {
$.ajax({
url: "http://sistermans.diskstation.me/NetBeans/Postcodes/api-postcode.php",
dataType: "jsonp",
jsonpCallback: "postcodeResults",
data : {mode: option, pnum: code }
});
}
oud = nieuw;
$("#loaderImage").hide();
$("input").prop('disabled', false);
}
if (code.length < 1 || code.length > 4) {
$("#pnum").css("background-color", "yellow");
}
});
Часть в HTML, где загрузчик изображений и ответ должен выскочить:
<div id="loaderImage">
<p>Haal de gegevens op volgens methode : <br>
<div id="keuze"></div><p>
<p><img src="web_images/ajax-loader-hscrew.gif"></p>
</div>
<table>
<div id="pnumTable">
</div>
</table>
Ответ будет показан в DIV pnumTable. Это всегда работает. <div id="keuze">
обрабатывается в другом месте.
Я, вероятно, сделал что-то не так, но я не могу, где.
Есть ли кто-нибудь, желающий помочь мне?
Ajax является асинхронной поэтому код не остановится, чтобы ждать, пока это не сделано. Метод '.hide()' загрузчика вызывается немедленно, поэтому вы его не увидите. Вам нужно будет добавить код, который вы хотите выполнить, когда вызов Ajax завершит свою функцию обратного вызова. – JJJ
Прочтите [это] (http://stackoverflow.com/a/7613888/863110) ответ. –