我正在使用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') %>
我遇到了两种错误:
SyntaxError: Parse error
关于http://biascica.pipps.net:8888/javascripts/prototype.js?1246455754上的fbml_static_get.php和喜欢的内容(effects.js和controls.js)
ReferenceError
:can't find variable a116508001384_PeriodicalExecuter
这是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
错误,但我认为这不是现在的优先事项。
任何人都可以帮我理解这个烂摊子吗?
谢谢! 非对称
答案 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);
}