Search code examples
jqueryajaxloadingsend

show loading before showing send result in jquery


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?


Solution

  • 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); }
        });
     });