2012-12-04 7 views
5

Mam prosty kod jquery, aby wysłać zawartość w oknie modalnym jQuery z ajax! wszystko działa bez problemu. w normalnych, po kliknięciu na przycisk nadawania, po 1-2 sekundach ten kod pokazujący wynik,pokaż ładowanie przed wyświetleniem wysłać wynik w jquery

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

Moje pytanie brzmi, jak mogę dodać i pokazać obraz ładowania po kliknięciu na wysyłanie i przed pokazaniem wynik ?

+1

mnóstwo próbek dostępne na SO, sprawdź elementy związane na tej stronie, na przykład ... –

+0

nie widzę Twój zdarzenia kliknięcia tam –

+0

http: //stackoverflow.com/questions/2257975/using-beforesend-and-complete-with-post –

Odpowiedz

13

można to zrobić przez ajaxStart() i ajaxComplete()

$("#loading").ajaxStart(function(){ 
    $(this).show(); 
}); 

$("#loading").ajaxComplete(function(){ 
    $(this).hide(); 
}); 

lub

$.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); } 
    }); 
}); 
+0

gdzie powinienem umieścić ten kod? – Alireza

+0

@Alireza bardzo proszę !,,,, –

1

można użyć $.ajax() zamiast $.post() i dodać beforeSend funkcję

5
$('#button').click(function(){ 
    $('#loading-div').html('<img src="..." />'); 
    $.ajax({ 
     type: 'POST', 
     url: '...', 
     data: {...}, 
     success: function(response) { 
      $('#loading-div').html(''); 
     } 
    }); 
}); 

W przypadku, gdy masz przycisk z id="button", a niektóre <div id="loading-div"></div> w którym można wyświetlać obraz

http://api.jquery.com/jQuery.ajax/

+0

Nadal jest to najlepsza odpowiedź! – proofzy