2014-03-26 95 views
1

我在一個PHP項目中使用了這個吐司消息插件。 http://akquinet.github.io/jquery-toastmessage-plugin/刷新頁面後從PHP調用jQuery消息通知

我需要的是觸發來自PHP的驗證/查詢結果的消息。像:

if ($data === FALSE) { // No product found with the called id. Return to the catalog page throwing error message 

    // Trigger Message from here ... 

    header('location: products.php'); 
} 

如果我只是附和腳本調用代碼或包括在模板中像這樣:

$message = " 
    <script> 
     $().toastmessage('showToast', { 
     text  : 'No product found with the specified criteria', 
     sticky : 1, 
     position : 'top-right', 
     type  : 'Error', 
     closeText: '', 
     close : function() { 
      } 
     }); 
    </script>"; 

echo $message; 

它的工作原理,但是當頁面被刷新出現的問題(如示例說明)爲了確保沒有重新提交表單,那麼echo會在刷新時丟失,它會在驗證過程中運行並且不會顯示消息。

任何方式來處理這個?

+0

那麼,然後在您要重定向的URL中傳遞一個參數,以便在下次運行PHP腳本時,您可以確定是否輸出該JS代碼。 – CBroe

+0

我不認爲有可能通過$ _GET轉發所有這些標籤和符號,它會在兩者之間中斷。你有沒有可以提供的例子。 – effone

+0

我沒有說你應該通過JS代碼本身作爲參數,但只有一個值,可以讓你決定在下一頁是否輸出JS代碼。 'products.php?showMessage = 1'或類似的東西。 – CBroe

回答

2

我張貼,我拿出這麼遠(as per discussion in meta)其他的參考什麼,如果任何人都可以提出它的一個更好的解決方案或改進:

我做了一個腳本的init.php是被裝載每一個頁面,並在頁面上我已經包括:

 // Alert message display 
     if(!isset($_SESSION['msgdisp'])){ 
      $_SESSION['msgdisp'] = 0; 
     }else if($_SESSION['msgdisp'] > 0){ 
      echo $_SESSION['msg']; 
      --$_SESSION['msgdisp']; 
     } 

// Toast message handler 
// ----------------------------------------------------------------------- 
function message($message='Message',$msg_type=3,$msg_trigger=1,$sticky=0) 
{ 
    $msg_type_array = array('Error','Success','Warning','Message'); 
    $msg_type = $msg_type_array[$msg_type]; 
    $_SESSION['msgdisp'] = $msg_trigger; 
    $_SESSION['msg'] = " 
     <script> 
      $().toastmessage('showToast', { 
      text  : '".$message."', 
      sticky : ".$sticky.", 
      position : 'top-right', 
      type  : '".strtolower($msg_type)."', 
      closeText: '', 
      close : function() { 
       } 
      }); 
     </script>"; 
} 

並通過PHP,我調用的函數是這樣的:

if ($data === FALSE) { // No product found with the called id. Return to the catalog page throwing error message 

    // Trigger Message from here ... 
    message('No product found with the specified criteria',0,2,1); // 2 is the display trigger, set 1 for no page refresh 
    header('location: products.php'); 
} 

我沒有考慮過其他點CBroe在評論中突出顯示用戶可能已經打開了多個窗口,原因是頁面刷新是即時的,並且在頁面被刷新並且顯示消息時用戶幾乎不能對其他窗口做任何事情。

現在工作正常(非常感謝CBroe),如果有人有任何想法,請分享。