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

发布于 2024-10-14 02:04:18 字数 1105 浏览 7 评论 0原文

如何在 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>

How can I execute script on page load inside a FBML Static page?

What I want to do is make an ajax call to my application when the page loads and display some data.

I tried following script but it doesn't work. I don't get any message neither Success nor 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>

If I make it a function and call it through on click it works, and I get a success message

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怎樣才叫好 2024-10-21 02:04:18

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

它类似于

<script><!--

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

   //-->
</script>

UPDATE

添加下一行只是为了确保这不是服务器错误和响应类型。

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

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

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

更新

如果问题是在页面上传事件上运行它。您应该将脚本放在页面的末尾。就像此处所描述的那样。

You should use FBJS (facebook version of JS). You can find documentation about ajax call here

it will be something like

<script><!--

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

   //-->
</script>

UPDATE

try to add next lines just to be sure that this is not a server error and a response type.

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

ResponseType can be one of Ajax.RAW, Ajax.JSON, or Ajax.FBML.

Are you using FireBug? Do you see a call to the server or any JS error?

UPDATE

if the problem is to run it on page upload event. You should put the script in the end of your page. Something like described here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文