интернет магазин комбайн philips hr 7765 купить.
Купить цифровой фотоаппарат тут: купить цифровой фотоаппарат.
раскрутка сайтов
  • 200910 Aug

    Если Вам нужно вывести динамически данные, которые "подгружаются" извне, то вот мое готовое решение для этих целей. Для этого мы воспользуемся JAVASCRIPT-фремворком, воспользовавшись его AJAX и APPEND-функциями

    Рабочий пример этой статьи можно увидеть по адресу: http://www.kvadroom.ru/yadoma/regions.html


    Для начала нужно создать элемент который будет вызывать нашу jQuery-функцию подгрузки и также создать HTML-элемент внутрь которого данные и будут подгружаться.


    <li id='r_123'>
           <a href="#stayhere" onclick='ExpandRegs(123);return false;'>Нажми меня :)</a>
    </li>

    А теперь переходим к JavaScript


    Чтобы дважды не подгружались данные для этого и того же элемента инициируем проверочный массив


    var op=new Array();

    Сама функция (r - идентификатор элемента по которому нажали, в нашем случае 123)


    function ExpandRegs(r){

    Первое это проверка, того же двойного нажатия


    if(op[r]==1)return;

    Теперь отправляем AJAX запрос, для этого можно использовать варианты $.post - для большого POST-запроса, $.get - для маленького HTTP-GET. В качестве параметра r_id передается идентификатор текущего элемента.


    $.post('/static/js_http_regions_xml.php',{'r_id':r}, function(xml){

    Обратите внимание! jQuery без глюков работает только c XML в кодировке UTF-8. Для конвертации используйте функцию UTF-8. Если в XML-файле ответа будут ошибки, то, скорее всего такие браузеры как Mozilla, Opera, Safari все равно их "прожуют" а вот Internet Exporer - без выдачи ошибки все что внутри $.post просто не выполнит.


    Пример получаемого XML-ответа:


    <?xml version="1.0" encoding="utf-8" standalone="yes" ?><allregs>
    <region><id>2513</id><name>Джава</name></region>
    <region><id>2514</id><name>Кваиси</name></region>
    <region><id>2515</id><name>Корниси</name></region>
    <region><id>2516</id><name>Ленингори</name></region>
    <region><id>2512</id><name>Цхинвали</name></region>
    </allregs>

    Только когда получили ответ на наш AJAX-запрос создаем внутренний HTML-элемент.


    $("#r_"+r).append("<ul id='rr_"+r+'></ul>');  

    И финал, разбираем пришедший в ответ XML-файл и генерируем HTML-код


    $(xml).find('region').each(function(){
                var nm=$(this).find('name').text();
                var id=$(this).find('id').text();
                $("#rr_"+r).append("<li id='r_"+id+"'><a href='#stayhere' onclick='ExpandRegs(\""+id+"\");return false;'>"+nm+"</a></li>");
    });

    Занавес: делаем отметку в проверочном массиве, что данный ID уже выведен


    op[r]=1;

    А теперь целиковая рабочая версия на PHP и JAVASCRIPT


    <?
    $rez=mysql_query("SELECT * FROM `some_table` WHERE 1");
    while($res=mysql_fetch_assoc($rez)){
    ?>
    <li id='r_<?=$res[id]?>'><a href="#stayhere" onclick='ExpandRegs(<?=$res[id]?>);return false;'><?=$res[name]?></a></li>
    <?}?>
    </ul>

     


    <script type='text/javascript' src="http://zhogov.ru/i/jquery.js"></script>
    <script type='text/javascript'>
    var op=new Array();
    function ExpandRegs(r){
        if(op[r]==1)return;
        $.post('/static/js_http_regions_xml.php',{'r_id':r}, function(xml){
            $("#r_"+r).append("<ul id='rr_"+r+'></ul>');   
            $(xml).find('region').each(function(){
                var nm=$(this).find('name').text();var id=$(this).find('id').text();
                $("#rr_"+r).append("<li id='r_"+id+"'><a href='#stayhere' onclick='ExpandRegs(\""+id+"\");return false;'>"+nm+"</a></li>");
            });
            op[r]=1;
        });
    }
    </script>



    Исходный код PHP-файла, который генерирует XML-ответ


    <?
    $str=$_POST['r_id'];
    if(!$str && $_GET['r_id'])$str=$_GET['r_id'];
    $rez=mysql_query("SELECT * FROM `some_table` WHERE `parent_id`=\"$str\"
    ORDER BY `name` ASC");
    if(mysql_num_rows($rez)>0){
    while($res=mysql_fetch_assoc($rez))
        {
            $allregs{$res[id]}=$res[name];
            $tot{$res[id]}=$to[tot];
        }
    }else{
        $allregs=array();
        $tot=0;
        $text="";
        $str="";
    }
    header("Content-type: application/xml");
    echo '<?xml version="1.0" encoding="utf-8" standalone="yes" ?>';
    ?><allregs>
    <?
     while(list($k,$v)=each($allregs)){
       ?><region><id><?=$k?></id><name><?=iconv("windows-1251","UTF-8",$v)?></name></region><?
    }
    ?>
    </allregs>

    Получился достаточно компактный но эффективный код, который надеюсь Вам пригодится.


     


     


    Если что-то не получается - отписывайте комментарий и обязательно указывайте свой email , я постараюсь в ближайшее время с Вами связаться.

  • Комментарии

  • Оставить комментарий

    (не публикуется)

В действии | Исходный код
  • UTF Windows Конвертер
  • СВЯЗЬ: ICQ: 4316764