php - 在 PHP 中调用 Javascript 函数不起作用

标签 php javascript facebook

我是 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”功能(见屏幕截图底部)。最后,您可以单击第二个箭头指向的位置并创建一个断点,以便调试器停止。

google docs script debugger

在逐步完成所有代码后,您会很高兴知道它工作得很好。

您的问题一定与您对代码运行方式/时间的理解有关。请注意,此代码中没有任何 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/

相关文章:

javascript - Apply.prototype.push.apply 与 forEach 对于嵌套数组?

Android Facebook 锁屏通知

ios - 如何将 View 样式设置为 16 :9 in React Native? 之类的比例

ios - FBDialogs presentShareDialogWithParams 成功但返回错误

javascript - 使用 javascript 获取值数据并删除行表

php - 当我使用 jqueryui 自动完成功能时,为什么我的网站会发出 "xssvuln"警报?

javascript - Hook window.location.* 分配和 window.location.assign

javascript - 访问 Javascript 变量

php mysql jquery javascript 聊天

php - 如何将连接对象传递给闭包