AJAX调用后延迟和退出无法正常工作

AJAX调用后延迟和退出无法正常工作

问题描述:

我有以下的AJAX调用,并且在AJAX调用成功后,我希望我的#success消息延迟和淡出。截至目前,它的作用是显示了第二的可能1,2-1.3和然后很快消失的速度比它走了进来。AJAX调用后延迟和退出无法正常工作

$(document).ready(function() { 
    $('.approve').click(function() { 
     $.ajax({ 
      url: 'userRequest_approve.php', 
      data: { 
       id: $(this).val(), //id 
       status: 'Approved' //status 
      }, 
      success: function (data) { 
       //do something with the data that got returned 
       $('#success').html('User Status Changed!'); 
       $('#success').delay(5000).fadeOut(400); 
      }, 
      type: 'POST' 
     }); 
    }); 
}); 

我的形式..

<form action="" method="POST" id="status"> 
    <input type='hidden' name='id' value='<?php echo $pending_id; ?>' id='pending_id' /> 
    <?php if ($pending_firstname==t rue) { echo "Name - ". $pending_firstname . " " . $pending_lastname . "</br>" . "Username - ". $pending_username . "</br></br>" //echo print_r($_POST); ?> 
</form> 
<button class="approve" type="submit" form="status" name="approve" value="<?=$pending_id;?>">Approve</button> 

我做这是一个小提琴... https://jsfiddle.net/jr7tuLep/

我得到一个错误,并且我不知道它是什么意思,但我粘贴到它的源代码,而不是PHP。

有没有人看到我在做什么错了? (我有我的文件中的jquery库)

这是我最初的问题之外的一点,但与我的AJAX调用,有没有办法来检测什么时候不能正确执行并发布消息?

+0

也许尝试使用CSS3动画?几年前我用jQuery制作了很多动画。从那以后,我只使用CSS Transitions,因为它工作很多,在大多数浏览器中GPU加速并且工作起来更容易。请告诉我,如果我应该告诉你我的意思 –

+0

请添加错误信息。我没有看到你的问题。 – Andy

+0

你是否正在调用托管在另一个域中的AJAX函数?成功代码是否正在执行? –

这是为我工作:

HTML:

<form id="status"> 
    <input type='hidden' name='id' value='23' id='pending_id' />Name - john</br>Username - john</form> 
<button class="approve" type="submit" form="status" name="approve" value="23">Approve</button> 
<div id="success" style="color: red;"></div> 
<br> 

JS代码:

$('.approve').click(function() { 
    $.ajax({ 
     url: '/echo/html', 
     type: 'POST', 
     data: { 
      id: $(this).val(), //id 
      status: 'Approved' //status 
     }, 
     success: function (data) { 
      //do something with the data that got returned 
      $("#success").fadeIn(); 
      $("#success").show(); 
      $('#success').html('User Status Changed!'); 
      $('#success').delay(5000).fadeOut(400); 
     }, 

    }); 
    return false; 
}); 

您可以使用错误财产AJAX管理错误,就像你成功做。另一方面,如果您在服务器端进行编码,则会发生错误,您可以返回一个布尔值和一条错误消息,指出哪里出错了,以便将其显示给用户。

+0

这样的错误?'尝试抛出新的错误('哎呀!'); (e){ }捕捉(e){ alert(e.name +':'+ e.message); }' – Paul

+0

如果我留在'return false;'中,我的代码就会死亡,并且它不会执行AJAX调用。如果我发表评论,那么这个信息从一开始就会做它做的事情? – Paul

+0

对于错误,您添加错误:function(jqXHR,textStatus,errorThrown){console.log(textStatus,errorThrown); } –

尝试用标准的JavaScript超时

setTimeout(function() { 
    $('#success').fadeOut(400); 
}, 5000); 

更换

$('#success').delay(5000).fadeOut(400); 

如果你不把($('#success').fadeIn(400).delay(500).fadeOut(600);)多个jQuery函数之间的延迟,可能更适合使用setTimeout()功能代替。