Вы могли бы сделать это двумя способами, но чтобы дать себе гибкость, вы могли бы рассмотреть способ обещаний (второй).
Я также скорректировал некоторые другие ваши коды, удалил глобальные переменные, использовал .data()
вместоattr()
и т. д.
Обратите внимание, что вы МОЖЕТЕ использовать события ajax, такие как ajaxStop, я приведу пример этого.
$(document).ready(function() {
$(".mainstuff").on('click', 'button', function() {
$('#loader').show();
let status = $(this).data("name");
let new_url = "demo_text.php?job_id=" + status;
$("#div1").load(new_url, function(newcontent) {
$('#loader').hide();
$(this).html(newcontent);
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Второй способ использования обещаний: обратите внимание, удаляйте те, которые вам не нужны.
$(document).ready(function() {
$(document).on("ajaxSend", function() {
$("#loading").show();
}).on("ajaxStop", function() {
$("#loading").hide(1000);
});
$(".mainstuff").on('click', 'button', function() {
$('#loader').show();
let status = $(this).data("name");
let new_url = "demo_text.php?job_id=" + status;
var myloader = $.ajax({
url: new_url,
data: {},
dataType: "html", // or whatever returns
type: 'GET'
});
myloader.done(function(newcontent) {
$("#div1").html(newcontent);
});
// hide in second "success", could be in prior
myloader.done(function(newcontent, textStatus, jqXHR) {
$('#loader').hide();
});
// process when we fail!
myloader.fail(function( jqXHR, textStatus, errorThrown) {
$('#loader').hide();
$('#loadfailed').text(textStatus+ " We are sorry, something is not right").show();
});
// hide no matter what when ajax returns
myloader.always(function(newcontent) {
$('#loader').hide();
});
});
});
.hidden {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="loader" class="hidden">Loading of Great Stuff!</div>
<div id="loading" class="hidden">Loading Great Stuff!</div>
<div id="loadfailed" class="hidden">Loading Failed</div>
<div class="mainstuff">
<button class="mybutton" data-name="myname">Main Stuff stuffer</button>
<div class="div1 content-holder">
</div>
</div>