我是 Google 文档的新手,已经设置了一个电子表格来访问三个不同 Facebook 页面上的“赞”数量。该代码是 Google 文档库的一部分,但我正在尝试获取结果总数并将其拉到我的 PHP 网站上。我只是从一个站点开始,只是因为我无法使其正常工作。
这是为编译 likes 而编写的 Javascript:
function FacebookFans(aPageId)
{
if (aPageId === undefined || aPageId === null)
{
throw "No parameter specified. Write Facebook PageID as parameter."
}
if (typeof aPageId != "number")
throw "Parameter must be number.";
// See http://developers.facebook.com/docs/reference/fql/page/ for API documentation
var url = "http://api.facebook.com/method/fql.query?query=SELECT%20page_id,page_url,fan_count%20FROM%20page%20%20WHERE%20page_id=%22" + encodeURIComponent(aPageId) + "%22";
var response = UrlFetchApp.fetch(url);
if (response.getResponseCode() != 200)
throw "Unexpected response code from Facebook.";
var responseText = response.getContentText();
if (responseText == null || responseText == "")
throw "Empty response from Facebook.";
var fan_count = 0;
try
{
var xml = Xml.parse(responseText, false);
var page = xml.getElement().getElement();
if (page == null)
throw "Wrong PageID.";
fan_count = parseInt(page.getElement("fan_count").getText());
}
catch (e)
{
throw "Problem with response from Facebook: " + e;
}
return fan_count;
}
现在,作为序言,我是 Javascript 的新手,所以如果我的代码离题太远,请不要杀了我,我仍在努力理解。我试着在体内运行这个:
<script type="text/javascript">
document.write(FacebookFans(40796308305));
</script>
我认为该函数会返回一个值,这会打印出该值(顺便说一句,数字是可口可乐的 Facebook 页面 ID,我认为这是一个很好的测试对象)。这是 Javascript 和 PHP 之间的冲突吗?我知道这是客户端和服务器端脚本的混合体。我不确定出了什么问题的原因是我在 Javascript 中设置了一个 var
然后使用 document.write 来回调它只是为了测试我的代码是否有效并且它召回了 var
很好。无论如何,非常感谢任何帮助。谢谢。
最佳答案
我使用 Google Docs 脚本调试器逐步执行您的脚本。
第一个箭头是启动脚本的地方。在选择功能的下拉菜单中,选择我创建的“doit”功能(见屏幕截图底部)。最后,您可以单击第二个箭头指向的位置并创建一个断点,以便调试器停止。
在逐步完成所有代码后,您会很高兴知道它工作得很好。
您的问题一定与您对代码运行方式/时间的理解有关。请注意,此代码中没有任何 PHP,因此我不确定您为什么要询问 PHP。
您需要特定的“操作”来运行您的脚本。您可以阅读更多关于 how scripts are run in Google docs 的信息.但是您的 document.write 在这里不适用,因为您不是在为网页编写脚本。您处于 Google 文档环境中。
如果您想在 Google 文档之外运行您的脚本,您会遇到 UrlFetchApp 调用的问题,因为这是 Google 特定的事情。如果您在 .html 文档中加载该脚本(并将其放在标签内),则可以使用 Google Chrome 找出错误。选择 Spanner 图标->工具->Javascript 控制台,它会立即向您显示错误。现在,通常您可以将其转换为其他内容,但 Javascript 会尽力阻止您发出跨域请求 (learn more)。
要将其转换为服务器端代码,在 PHP 中非常简单。您基本上只是调用一个 url,然后用 XML 解析它。要加载 url 的内容,请使用 file_get_contents然后 parse the xml .
关于php - 在 PHP 中调用 Javascript 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9323203/