Выполнить скрипт при загрузке страницы в статическом FBML
Как выполнить скрипт при загрузке страницы внутри статической страницы 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>
1 ответ
Вы должны использовать FBJS (версия JS на Facebook). Вы можете найти документацию по ajax call здесь
это будет что-то вроде
<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?
ОБНОВИТЬ
если проблема заключается в том, чтобы запустить его на странице загрузки события. Вы должны поместить скрипт в конец вашей страницы. Нечто подобное описано здесь.