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调用,有没有办法来检测什么时候不能正确执行并发布消息?
答
这是为我工作:
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管理错误,就像你成功做。另一方面,如果您在服务器端进行编码,则会发生错误,您可以返回一个布尔值和一条错误消息,指出哪里出错了,以便将其显示给用户。
答
尝试用标准的JavaScript超时
setTimeout(function() {
$('#success').fadeOut(400);
}, 5000);
更换
$('#success').delay(5000).fadeOut(400);
如果你不把($('#success').fadeIn(400).delay(500).fadeOut(600);
)多个jQuery函数之间的延迟,可能更适合使用setTimeout()
功能代替。
也许尝试使用CSS3动画?几年前我用jQuery制作了很多动画。从那以后,我只使用CSS Transitions,因为它工作很多,在大多数浏览器中GPU加速并且工作起来更容易。请告诉我,如果我应该告诉你我的意思 –
请添加错误信息。我没有看到你的问题。 – Andy
你是否正在调用托管在另一个域中的AJAX函数?成功代码是否正在执行? –