2014-03-24 104 views
0

我有一个问题(显然), 我已经做了一个表单,在AJAX中发送数据。 成功时,我从我的请求中获取返回值,并将其附加到og标记内容中。 例如更改元Facebook的og与jQuery

$('meta[property="title"]').attr('content', data.title); 

什么,当我在我的铬控制台检查元素,这些变化在完成后。 但是,如果我点击Facebook分享按钮,它并不关心我的更改... 最后,我想要改变的是标签标题,描述和图像。

任何解决方案? 谢谢大家。

+0

您需要在服务器端生成此HTML。 Facebook的HTML解析器将不会运行脚本。 –

+0

你的意思是我无法使用AJAX? 该死的.. 或你的意思是我必须在php中创建我的元元素,但我仍然可以使用AJAX,但不是设置元og内容我附加meta有效吗? – Brazeredge

+0

我的意思是Facebook会要求你使用自己的服务器给它的URL,并解析HTML请求吐出的任何HTML。它不会运行*任何*脚本或做任何其他事情。你需要想出一个适用于这种设计的方法。 –

回答

2

当页喜欢引用在Facebook上,Facebook的请求从他们的最终的URL,下载HTML,并使用其解析一个寻找OpenGraph标签的简化的HTML解析器。

因此,只有由服务器直接生成的HTML才会被Facebook看到。 HTML中嵌入的任何JavaScript都不会运行,也不会加载页面引用的任何资源。

您需要找出某种方式通过操作URL来传达信息;如添加URL参数,为内容分配固定链接,使用Web服务器上的重写规则等。

0

一个URL只能有一个opengraph描述。但是,您可以添加一些变量以根据内容更改opengraph标签。假设您有一个www.example.com页面并希望共享一些实体。如果你有一个用户,你可以分享www.example.com?user=[id],设置服务器端代码来做到这一点:

if (isset($_GET['user'])) { 
    // Opengraph for user 
    // Perhaps you wanna load the user and show his infos. 
} 
if (isset($_GET['team'])) { 
    // opengraph for team 
} 
else { 
    // Default opengraph 
} 

不要忘记,opengraph IMAGE必须在DOM 。您可以随时添加

<div style="display: none;"> 
<img src="[path to the shared image]" /> 
</div> 

希望帮助

+0

感谢它是有用的,但不完全是我要求。 如果可以,我应该投票;) – Brazeredge