问题
I have a simple jquery code to send a content in a jQuery modal window with ajax! everything is working without any problem. in normal, after clicking on the send button, after 1-2 seconds this code showing the result,
function AddFastqpro(action) {
var b = {};
b[dle_p_send] = function () {
var response = $('#dle-poke').val()
$.post(dle_root + 'engine/ajax/fast.php', { text: response, action: action },
function (data) {
if (data == 'ok') {
DLEalert(dle_p_send_ok, dle_info);
}
else { DLEalert(data, dle_info); }
});
};
$('body').append("<div id='dlepopup' style='display:none'><textarea id='dle-poke'></textarea></div>");
$('#dlepopup').dialog({
autoOpen: true,
modal: true,
draggable: false,
width: 350,
dialogClass: "modalfixed",
buttons: b
});
};
My question is, how I can add and show a loading picture after clicking on send and before showing the result?
回答1:
you can do this by ajaxStart()
and ajaxComplete()
$("#loading").ajaxStart(function(){
$(this).show();
});
$("#loading").ajaxComplete(function(){
$(this).hide();
});
or
$.ajax({
url : dle_root + 'engine/ajax/fast.php',
data: { text: response, action: action },
beforeSend: function(){
$("#loading").show();
},
complete: function(){
$("#loading").hide();
},
success: function (data) {
if (data == 'ok') {
DLEalert(dle_p_send_ok, dle_info);
}
else { DLEalert(data, dle_info); }
});
});
回答2:
$('#button').click(function(){
$('#loading-div').html('<img src="..." />');
$.ajax({
type: 'POST',
url: '...',
data: {...},
success: function(response) {
$('#loading-div').html('');
}
});
});
In case if you have button with id="button"
, and some <div id="loading-div"></div>
in which you can display image
http://api.jquery.com/jQuery.ajax/
回答3:
you can use $.ajax()
instead of $.post()
, and add a beforeSend
function
来源:https://stackoverflow.com/questions/13705945/show-loading-before-showing-send-result-in-jquery