Вопрос по prototypejs

Статус
В этой теме нельзя размещать новые ответы.

cebep

Постоялец
Регистрация
27 Июл 2006
Сообщения
63
Реакции
3
Добрый день!
Опыт работы с ajax очень маленький у меня, поэтому такие вопросы :)

Использовать нужно именно библиотеку prototype
Пример использования есть на сайте _36on.ru
Мне поставили задачу, сделать блоки на страницах такие же перезагружаемые.

Почему именно prototype?
Студент-разработчик использовал ее для других целей уже.

Итак, что у меня получилось сделать
такой вид ссылки
Код:
new Ajax.Updater('vidblock','/core/ajax/ajax.php?view=change_news', {asynchronous:true, evalScripts:true});
работает, НО
затирает все, что находится ниже этого блока

предполагаю, что правильный вариант будет использовать следующее
Код:
new Ajax.Request('/core/ajax/ajax.php?view=change_news', {asynchronous:true, evalScripts:true});
но я не могу заставить это работать
по идее мне нужно вернуть Element.update("vidblock", "измененное_содержимое");
но у меня не получается, даже если подсовывать вручную готовый ответ - нет реакции на ссылку

документацию искал, что нашел - читал, не помогло :)
заранее спасибо!
 
может в измененное_содержимое есть двойные ковычки и получается ошибка в скрипте, тогда заменяй двойные ковычки на \". Смотри в браузере firefox консоль ошибок (Ctrl+Shift+J), там видно что за ошибки в яваскрипте.
 
смотрел
ошибок нет :)

пытаюсь найти похожее решение (пример) в инете - не получается

кто-нибудь может помочь накидать простой пример работы?
 
там загружается яваскрипт который обновляет блок, а может просто загружать html в блок, например:
HTML:
    new Ajax.Request('core/ajax/ajax.php?view=change_news', {
        method: 'get',
        onSuccess: function(transport) {
            $('vidblock').update(transport.responseText);
        }
    });
и чтоб яваскрипт не кидал ошибок добавить в хедер ajax.php что это хтмл, а не javascript:
PHP:
header('Content-Type: text/html; charset=utf-8');
вообще маловато документации с примерами по prototype


, поэтому можно подключить ещё фрэймворк например jquery он это позволяет, и можно оставить prototype и дальше работать с jquery, или потом переделать всё в jquery.

Пример prototype и jquery симбиоза:
HTML:
//JQUERY
    //запускаем jquery без конфликтов с другими фрэймворками
    jQuery.noConflict();
    
    //используем jQuery через jQuery(...)
    jQuery(document).ready(function(){
          alert(jQuery("block").html());
    });

//PROTOTYPE
//документ загрузился запускаем скрипт
document.observe("dom:loaded", function() {
        alert($("block").innerHTML);
});

//PROTOTYPE AND JQUERY
jQuery(document).ready(function(){
     alert($('block').innerHTML);
});
все примеры прикрепил к сообщению
 

Вложения

  • prototype_and_jquery_simbiosis.zip
    94 KB · Просмотры: 3
к сожалению у меня при загрузке html в блок, все так же, затирается все то, что ниже этого дива находится :(

а как мне загрузить яваскрипт, который обновит блок, через Ajax.Request?
точнее, как должен выглядеть сам яваскрипт
 
ну если в блок грузить то из блока всё что в нём было стерётся, а может где хтмл тэг пропущен или не завершён.

Чтоб данные грузились как яваскрипт и запускался надо к данным добавить в хедер что это яваскрипт:
PHP:
header('Content-Type: text/javascript; charset=utf-8');
тогда prototype всё поймёт и запустит как яваскрипт загруженные данные.
HTML:
Element.update("block", "измененное_содержимое");
или
HTML:
$('block').update("block", "измененное_содержимое");
пример вложен
 

Вложения

  • prototype_load_javascript.zip
    29,8 KB · Просмотры: 5
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху