ajax成功延迟不起作用

delay in ajax success not working

本文关键字:不起作用 延迟 成功 ajax      更新时间:2023-09-26

这是我的ajax

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

               }               }
         }); 

实际上,这个用--->标记的代码没有延迟工作,它直接显示Save

如果我删除delay(3000).val('Save'),它将显示Saved !

而我想要的是显示CCD_ 5然后等待3秒然后显示Save。我怎样才能做到这一点?thnaks

$this为按钮。

[更新]使用setTimeout(function(){ /* your code */},3000);

更新:如果您仍然想使用jquery延迟,请这样写:

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

演示

这是因为"delay()"的默认队列是"fx",它不会自动包含val(),所以你只需要将其添加到其中。

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

使用setTimeout(函数时间是最佳解决方案
但是,如果你想为按钮设置动画,你可以使用jQuery.animate()

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