2013-06-27 3 views
3

вот мой Аяксзадержка АЯКСА успеха не работает

  var $this = $(this); 
$.ajax({ 

     url: "process.php", 
     dataType: 'json' , 
     data :{ 
      method:'POST', 
      id :id , 
      img_val : img_val}, 
     type : 'POST', 
     success: function(output_data){ 
       if (output_data.msg == 'taken'){ 

     --->  $this.val('Saved !').delay(3000).val('Save') ; 


       }    } 
     }); 

фактически этот код отмечен ---> Didnt работы с задержкой отображается непосредственно Save

если я удалить delay(3000).val('Save') его отображение Saved !

и я хочу отобразить Saved !, а затем подождать 3 секунды, а затем отобразить Save. как я могу это достичь? thnaks

$this есть кнопка.

+4

'задержки()' для анимации. Прочтите документы. – epascarello

+0

Я клянусь 'delay()' вызвал больше путаницы в jQuery, чем любая другая функция. Этот вопрос возникает ежедневно. – alex

ответ

7

[обновлено] использование setTimeout(function(){ /* your code */},3000);

обновление: если вы все еще хотите использовать задержку Jquery написать это:

$('#dd').val('firstVal').delay(2000).queue(function(){$(this).val('SecondVal');}).delay(...; 

DEMO

и это потому что по умолчанию «delay()» - «fx», который не включает val() в нем автоматически, поэтому вам просто нужно добавить его к нему.

+0

работал замечательно :) спасибо. –

+0

**. Queue() ** потрясающе! Спасибо за ваш вклад! :) – jherax

3
var $this = $(this); 
$.ajax({ 
    url: "process.php", 
    dataType: 'json', 
    data: { 
     method:'POST', 
     id :id, 
     img_val : img_val 
    }, 
    type: 'POST', 
    success: function(output_data) { 
     if (output_data.msg == 'taken') { 
      $this.val('Saved!'); 
      setTimeout(function() { $this.val('Save'); }, 3000); 
     } 
    } 
}); 
2

Использование SetTimeout (функции, времени) является лучшим решением.
Но если вы хотите анимировать кнопку, вы можете сделать это с jQuery .animate()

var $this = $(this); 
$this.val("Saved!").animate(
    { opacity: 0.99 }, //transition 
    2000, //duration 
    function() { //animation complete 
     $this.val("Save"); 
    });