Вопрос по prototypejs

Тема в разделе "PHP", создана пользователем cebep, 3 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. cebep

    cebep Постоялец

    Регистр.:
    27 июл 2006
    Сообщения:
    62
    Симпатии:
    2
    Добрый день!
    Опыт работы с 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", "измененное_содержимое");
    но у меня не получается, даже если подсовывать вручную готовый ответ - нет реакции на ссылку

    документацию искал, что нашел - читал, не помогло :)
    заранее спасибо!
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    может в измененное_содержимое есть двойные ковычки и получается ошибка в скрипте, тогда заменяй двойные ковычки на \". Смотри в браузере firefox консоль ошибок (Ctrl+Shift+J), там видно что за ошибки в яваскрипте.
     
  3. cebep

    cebep Постоялец

    Регистр.:
    27 июл 2006
    Сообщения:
    62
    Симпатии:
    2
    смотрел
    ошибок нет :)

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

    кто-нибудь может помочь накидать простой пример работы?
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    там загружается яваскрипт который обновляет блок, а может просто загружать 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

    http://globalmoxie.com/projects/prototype-pdf/index.shtml


    , поэтому можно подключить ещё фрэймворк например 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);
    });
    
    
    все примеры прикрепил к сообщению
     

    Вложения:

    cebep нравится это.
  5. cebep

    cebep Постоялец

    Регистр.:
    27 июл 2006
    Сообщения:
    62
    Симпатии:
    2
    к сожалению у меня при загрузке html в блок, все так же, затирается все то, что ниже этого дива находится :(

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

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    ну если в блок грузить то из блока всё что в нём было стерётся, а может где хтмл тэг пропущен или не завершён.

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

    Вложения:

    cebep нравится это.
Статус темы:
Закрыта.