2015-10-26 153 views
0

我有一個登錄屏幕在iframe中可見,當有人登錄iframe時,應該在主頁面上彈出一個菜單按鈕。刷新php代碼每秒

這是我現在的代碼:

<?php if (isset($player)){ 
         echo' 
      <ul class="nav-header pull-right"> 
       <li> 
        <div class="btn-group"> 
         <button class="btn btn-default btn-image dropdown-toggle" data-toggle="dropdown" type="button"> 
          <img src="assets/img/avatars/avatar10.jpg" alt="Avatar"> 
          <span class="caret"></span> 
         </button> 
         <ul class="dropdown-menu dropdown-menu-right"> 
          <li class="dropdown-header">Profile</li> 
          <li> 
           <a tabindex="-1" href="base_pages_profile.html"> 
            <i class="si si-user pull-right"></i> 
            <span class="badge badge-success pull-right"></span>Profile 
           </a> 
          </li> 
          <li> 
           <a tabindex="-1" href="javascript:void(0)"> 
            <i class="si si-settings pull-right"></i>Settings 
           </a> 
          </li> 
          <li class="divider"></li> 
          <li class="dropdown-header">Actions</li> 
          <li> 
           <a tabindex="-1" href="logout.php"> 
            <i class="si si-logout pull-right"></i>Log out 
           </a> 
          </li> 
         </ul> 
        </div> 
       </li> 
      </ul>'; } ?> 

isset($播放器)爲成爲真正的一旦有人登錄,在但是這個代碼僅適用,如果你刷新頁面,我該怎麼創造的東西只要有人登錄,此代碼就會刷新?

+0

爲什麼登錄框放置在iframe中?除非有特定需求,否則我會建議將它作爲頁面的一部分而不是iframe。這樣,當登錄被提交時,頁面會更新。 – Ms01

回答

1

您需要使用AJAX;使用通常被稱爲Short Polling的技術。你可以做的是,使用setInterval,你可以每秒觸發一次AJAX請求並獲取新的代碼。每一秒將太多的服務器來處理,所以照顧它太:

setInterval(function() { 
    $("#divId").load("/path/to/php/response.php"); 
}, 1000); 

1000是一秒,因爲它的單位是毫秒。

另一種技術是向服務器發送一個請求,該請求會創建一段時間內打開的請求。如果在此間隔期間收到更新,則將響應發送到客戶端,否則連接將終止。這種技術被稱爲Long Polling。在代碼中它會看起來像:

(function poll() { 
    setTimeout(function() { 
    $.ajax({ url: "server", success: function(data) { 
     sales.setValue(data.value); 
    }, dataType: "json", complete: poll }); 
    }, 30000); 
})(); 

然而,有時,用錘擊請求您的服務器每10秒可能不是一個偉大的的事情。那麼,我們在這些絕望的時代呼喚誰? Socket Streaming。客戶端發送請求到服務器。該請求與知道在收到更新的情況下向客戶端發送響應的服務器創建無限期的流。

對於進一步閱讀:

+0

好吧,我會試試這個,這是我可以複製到我的html的確切代碼?我從來沒有使用Ajax。 –

+0

好吧,這不是*確切的*代碼。請使用您想要加載PHP代碼的元素的真實'id'。而且,要加載的網址應該更改。 –