2016-06-27 29 views
2

我使用this模板,並有一個示例頁面涵蓋通知。有很多按鈕在按下時顯示通知。我看看按鈕的來源:顯示通知的JavaScript

<a id="toastr_show" href="#" class="btn btn-dark">Show</a> 

我找到了javascript源代碼。

function runToastr(obj){ 
    $(obj.elem).on("click", function(e) { 
     e.preventDefault(); 
     toastr.options.closeButton = false; 
     toastr.remove(); 
     switch(obj.type){ 
... 

我想知道如何從php調用這個通知?

+1

爲什麼要讓您從php觸發客戶端操作? –

+1

我正在處理提供的用戶憑據,並希望讓用戶知道他的密碼是否有錯 – Jony

+0

長話短說,你不能。你可以使用ajax來動態加載內容,甚至可以將數據發送到php腳本,但是你不能讓PHP發送數據給客戶端(通常你可以嘗試使用套接字,但PHP並不意味着這一點)。 –

回答

1

有幾種方法適合您。 HTML5解決方案:

  1. 的WebSocket
  2. 服務器發送的事件

Websocket創建一個雙向隧道,Server-sent Events從服務器上創建一個單向隧道客戶端。他們都可以讓你的服務器端程序發送一個「通知」給你的客戶端,這樣你就可以通過Javascript顯示它。 HTML5在任何瀏覽器中都不起作用。它的編程有點困難。

最簡單的方法是提出AJAX請求週期。但是,這意味着通知不是實時的。並且短時間會耗費您的客戶端上的電池和服務器上的資源

1

要觸發從服務器端到客戶端的通知,可能會實現以下技術: 1. Websockets。這是HTML5中一個相對較新的功能。它使服務器不佔用CPU的端口保持打開狀態並監聽該端口。現在,服務器將必須傳遞給客戶端的任何內容都傳遞給客戶端,並且客戶端實時渲染它。其應用程序在聊天應用程序中。但到目前爲止,PHP的功能還是有限的。但是NodeJS有Socket.IO以及更多。您可能想要閱讀關於Websockets here

2.一個聰明的解決方法是請求使用間隔請求的通知。您只需將該請求包裝在JavaScript setInterval()方法中就可以做到這一點。如果您使用的是jQuery,請務必將其放入$(document).ready(function() {});