2017-06-04 46 views
1

我想模擬使用setInterval自制推送通知,但不知道如何做到這一點。 ajax請求在顯示消息時工作得很好。這不是問題。我試圖在section style='notification'中顯示單獨的通知。setInterval如果Ajax返回數據顯示div

阿賈克斯片斷

setInterval(function(){ 
$.ajaxSetup({ 
    cache:false, 
    type: "GET", 
    url: "log.php", 
    data: data, 
}); 
     $('#displayMessage').load('log.php'); 

    //display div notification if return data 
    //document.getElementById('notification').style.display = 'block'; 

}, 3000); 

標記

<section style='display:none;' id='notification' class="notif notif-notice alert alert-dismissable"> 
     <h6 class="notif-title">Congratulations! 
     <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 
     </h6> 
     <p>You have just received a new message</p> 
    </section> 
+0

您的'load'調用正在使用id爲'displayMessage'的元素進行操作。但是在你的標記中沒有這個id的元素。你期待這件事做什麼? – RJM

+0

@RJM:試圖顯示板塊通知 –

+0

@RJM:爲了弄清楚事情我更新了我的問題。這個問題與displayMessage無關。它效果很好。我只是試圖顯示一個單獨的獨立分區。 –

回答

2

JavaScript的.load()方法有一個可選參數是負載完成後做一個功能。它看起來像這樣:

$('#displayMessage').load('log.php', function(){ 
    $('#notification').show(); 
}); 
+0

請注意,無論成功或錯誤條件,都會調用回調函數。您在這裏沒有指示是否返回了數據,或者發生了錯誤。 – pacifier21

+0

的確如此。我沒有解釋這一點,因爲處理不加載事件的例外對我來說似乎是一個單獨的問題。我認爲更有效的方法可能是在'log.php'文件中放入一個能夠顯示div的.load()方法,但我不知道該文件中是什麼,或者如果提問者有任何控制權,所以我沒有提出這個建議。 – jimboweb

+0

@jimboweb:在log.php中有一個while語句是。 –