2017-10-18 175 views
0

我知道這個問題出現了很多,但我還沒有能夠解決我的問題。如何動態更新元標記

我有一個由PHP驅動的網站,其中包含視頻。不同的視頻有自己的網址,如index.php?id = 1。對於Facebook分享,我希望每個視頻/網址都有更新的元標記。

每個視頻的信息(標題,說明等)都存儲在數據庫中,並且我成功將該信息檢索到我的網站。

下面是從JavaScript傳遞一個變量到PHP腳本:

<script> 
     var video; 
     var URL = document.location; 

     function setVideo(src){ 
      video = src; 

      $(document).ready(function(){ 
        $.ajax({ 
         url: URL, 
         type: 'GET', 
         data: { 
          videoPHP: video,  
          }, 
         success: function(data) { 
          // This prints the php result to html 
          $('#headerFromFile').html(data) 
         } 
        }); 
      }); 
     } 
</script> 

這裏是PHP:

if (isset($_GET['videoPHP'])) { 

    $videoID = $_GET['videoPHP']; 

    // SQL query 
    $sql = "SELECT * FROM Videos WHERE ID='$videoID'"; 
    $result = $connect->query($sql); 
    $row = $result->fetch_assoc(); 
    ?> 

    <h1><?php echo $row['Header'];?></h1> 
    <p><?php echo $row['Description'];?></p> 
<?php 

通過這樣做,我能夠呼應標題和描述視頻到div #headerFromFile在我的html文檔中。

但問題是,我想有存儲到元屬性=此信息「OG:標題爲」元屬性=「OG:說明」當前URL的

任何幫助,高度讚賞。

+0

[更改元標籤動態使用jQuery]的可能的複製( https://stackoverflow.com/questions/7308970/changing-meta-tags-dynamic-with-jquery) –

+0

當'index.php?id = 1'時,您的_server_需要使用正確的元數據返回HTML文檔請求。您不能使用客戶端代碼設置OG元標記,Facebook刮板並不關心這一點。您基本上想要完全取消AJAX部分,並將PHP代碼移動到'head'中,並使其在那裏輸出元標記。 – CBroe

+0

太棒了。那就是訣竅。我擺脫了ajax,並將php部分移到html的頭部。從那裏我可以將php變量直接回顯到meta標籤中。 謝謝! –

回答

0

元標記是在你的ajax運行之前寫入dom的。我建議你在頁面加載之前獲得數據庫的數據回合,並將變量放入元標記中。

但是,如果我理解正確,在加載dom之後您的內容可能會更改,並且在發佈到Facebook時會讀取舊的元數據。我不;噸知道這是否會幫助因爲Facebook可能無法獲得更新的meta標籤要麼但嘗試OT改變超常踏歌這樣的...

$('meta[name=description]').remove(); 
$('head').append("<meta name='description' content='Video Title'>"); 
+0

facebook無法運行JavaScript,因此使用javascript更改元標記毫無意義。 – luschn