如何动态更新元标记

时间:2017-10-18 10:28:04

标签: javascript php facebook meta

我知道这个问题很多,但我还没能解决我的问题。

我有一个由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

通过这样做,我能够将视频的标题和描述回显到我的html文档中的div #headerFromFile

问题是,我希望将此信息存储到 meta property =“og:title” meta property =“og:description”当前网址。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在ajax运行之前,将元标记写入dom。我建议您在页面加载之前获取数据库的数据,并将变量放入元标记中。

但是,如果我理解正确,您的内容可能会在加载dom后发生更改,并且在发布到Facebook时会读取旧的元数据。我不知道这是否会有所帮助,因为Facebook可能也没有获得更新的元标记,但是尝试改变这样的元标记......

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