2015-07-13 71 views
-2

我有以下的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函數?成功代碼是否正在執行? –

回答

1

這是爲我工作:

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

0

嘗試用標準的JavaScript超時

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

更換

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

如果你不把($('#success').fadeIn(400).delay(500).fadeOut(600);)多個jQuery函數之間的延遲,可能更適合使用setTimeout()功能代替。