periodic_call_remote:用于Facebook应用程序的Rails AJAX

时间:2009-08-06 20:17:51

标签: javascript ruby-on-rails ajax facebook prototypejs

我正在使用FBML和Prototype JavaScript库为facebook构建一个RoR应用程序。

我正在尝试做的是使用整洁的自动刷新div periodically_call_remote,它会创建一个PeriodicalExecuter对象。

这是代码:

 <%= render :partial => "status_item", :collection => @status %>
 <%= periodically_call_remote( :url => { :action => :status, :id => @hunt.id }, :update => 'status_div') %>

我遇到了两种错误:

  1. SyntaxError: Parse error关于http://biascica.pipps.net:8888/javascripts/prototype.js?1246455754上的fbml_static_get.php和喜欢的内容(effects.js和controls.js)

  2. ReferenceErrorcan't find variable a116508001384_PeriodicalExecuter

  3. 这是javascript代码,由facebook修改:

    new a116508001384_PeriodicalExecuter(function() {new a116508001384_Ajax.Updater('status_div', '/corinna_test/servers/ren%C3%A9/treasure_hunts/12/status', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + a116508001384_encodeURIComponent('qBY5jTvJ04rEcvLsQzkhNkEhRXN1wRA2ITrgq/4JmVg=')})}, 10)
    

    (注意他们如何在几乎所有事物面前附加a116508001384_

    我也遇到了iframex错误,但我认为这不是现在的优先事项。

    任何人都可以帮我理解这个烂摊子吗?

    谢谢! 非对称

1 个答案:

答案 0 :(得分:1)

你不能这样做。 Facebook有自己的限制版Javascript,名为Facebook Javascript(FBJS)。您需要使用Facebook的Ajax对象。原型API的东西不适用于FBJS。您需要使用FBJS或将您的应用程序放在iframe中。


function doAjaxStuff() {
    var ajax = new Ajax();
    var params = { param1: 'param1' };
    ajax.responseType = Ajax.FBML;
    ajax.ondone = function(data) { $('div').setInnerFBML(data); };
    ajax.onerror = function() { $('div').setTextValue('error...'); };
    ajax.post(URL, params); 
}