在静态FBML中执行页面加载时的脚本

时间:2011-01-26 13:28:00

标签: facebook fbml facebook-fbml staticfbml

如何在FBML静态页面内执行页面加载脚本?

我想要做的是在页面加载并显示一些数据时对我的应用程序进行ajax调用。

我尝试了以下脚本,但它不起作用。我既没有成功也没有错误

<script type="text/javascript"><!--
 var ajax = new Ajax(); 
 ajax.responseType = Ajax.JSON;
 ajax.ondone = function(data) {          
  new Dialog().showMessage("Success", "Got Response");
 }

  ajax.onerror = function(data) {          
   new Dialog().showMessage("Error", "Failure");
  }

  ajax.requireLogin = false;
  ajax.post('http://www.xyz.com/abc');

 //--></script>

如果我将它作为一个功能并通过单击它调用它可以工作,我得到一个成功的消息

<a href="#" onclick="on_load(); return false;">Click</a>
<script type="text/javascript"><!--
function on_load() {
 var ajax = new Ajax(); 
 ajax.responseType = Ajax.JSON;
 ajax.ondone = function(data) {          
  new Dialog().showMessage("Success", "Got Response");
 }

  ajax.onerror = function(data) {          
   new Dialog().showMessage("Error", "Failure");
  }

  ajax.requireLogin = false;
  ajax.post('http://www.xyz.com/abc');
 }

 //--></script>

1 个答案:

答案 0 :(得分:1)

你应该使用FBJS(Facebook版的JS)。您可以找到有关ajax call here

的文档

它会像

<script><!--

      var ajax = new Ajax();
      ajax.ondone = function(data) {
        //do something
      }
      ajax.post('http://example.com/testajax.php');    

   //-->
</script>

<强>更新

尝试添加下一行,以确保这不是服务器错误和响应类型。

req.responseType=Ajax.FBML;    
ajax.onerror=function(data){
    alert("Something went wrong. Please, try again.");
}
  

ResponseType 可以是Ajax.RAW,Ajax.JSON或Ajax.FBML之一。

您使用的是FireBug吗?您是否看到对服务器的调用或任何JS错误?

<强>更新

如果问题是在页面上传事件中运行它。您应该将脚本放在页面的末尾。像here描述的东西。