0

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

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

我尝试了以下脚本,但它不起作用。我没有收到任何消息,无论是 Success 还是 Error

<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>
4

1 回答 1

1

您应该使用 FBJS(JS 的 Facebook 版本)。您可以在此处找到有关 ajax 调用的文档

它会像

<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 错误?

更新

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

于 2011-01-26T14:29:49.357 回答