如何动态更新元标记
问题描述:
我知道这个问题出现了很多,但我还没有能够解决我的问题。如何动态更新元标记
我有一个由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的。
任何帮助,高度赞赏。
答
元标记是在你的ajax运行之前写入dom的。我建议你在页面加载之前获得数据库的数据回合,并将变量放入元标记中。
但是,如果我理解正确,在加载dom之后您的内容可能会更改,并且在发布到Facebook时会读取旧的元数据。我不;吨知道这是否会帮助因为Facebook可能无法获得更新的meta标签要么但尝试OT改变超常踏歌这样的...
$('meta[name=description]').remove();
$('head').append("<meta name='description' content='Video Title'>");
+0
facebook无法运行JavaScript,因此使用javascript更改元标记毫无意义。 – luschn
[更改元标签动态使用jQuery]的可能的复制( https://stackoverflow.com/questions/7308970/changing-meta-tags-dynamic-with-jquery) –
当'index.php?id = 1'时,您的_server_需要使用正确的元数据返回HTML文档请求。您不能使用客户端代码设置OG元标记,Facebook刮板并不关心这一点。您基本上想要完全取消AJAX部分,并将PHP代码移动到'head'中,并使其在那里输出元标记。 – CBroe
太棒了。那就是诀窍。我摆脱了ajax,并将php部分移到html的头部。从那里我可以将php变量直接回显到meta标签中。 谢谢! –