periodically_call_remote: Rails AJAX для приложения на Facebook - PullRequest
0 голосов
/ 07 августа 2009

Я создаю приложение RoR для Facebook с использованием FBML и библиотеки прототипов JavaScript.

я пытаюсь сделать так, чтобы div автоматически обновлялся, используя аккуратные periodically_call_remote, который создает PeriodicalExecuter объект.

вот код:

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

Я получаю 2 вида ошибок:

  1. SyntaxError: Parse error на fbml_static_get.php на http://biascica.pipps.net:8888/javascripts/prototype.js?1246455754 и лайки (effect.js and controls.js)

  2. ReferenceError s: 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 ошибок, но я не думаю, что это сейчас приоритет.

Может кто-нибудь помочь мне разобраться в этом беспорядке?

спасибо! асимметричный

1 Ответ

1 голос
/ 15 августа 2009

Вы не можете сделать это. У Facebook есть собственная ограниченная версия Javascript, которая называется Facebook Javascript ( FBJS ). Вам нужно использовать Ajax-объект Facebook. Прототип 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); 
}

...