За последние 24 часа нас посетили 34966 программистов и 1758 роботов. Сейчас ищут 772 программиста ...

динамическое обновление ( $.post() )

Тема в разделе "JavaScript и AJAX", создана пользователем mutabor, 20 янв 2011.

  1. mutabor

    mutabor Активный пользователь

    С нами с:
    16 июн 2010
    Сообщения:
    5
    Симпатии:
    0
    Доброго дня всем!
    На странице есть объект <select> в котором лежат названия моделей автомобилей.
    Нужно при выборе модели тянуть из базы инфу по запчастям этой модели и отображать на странице. Т.е. на лицо динамическое обновление (работаю с Jquery).
    Всё что придумал:
    1. написал ф-ю на java script
    Код (Text):
    1. function gate_(p,id,p1)
    2.  {
    3.      $.post(p,{id:id, p1:p1 },function (data){   $(id).html(data); });
    4.  }
    p – имя вызываемого php файла.
    Id – id обновляемого объекта (в моём случае это id таблицы)
    p1 – параметр передаваемые в php файл (в моём случае значение модели).



    2. на <select> вешаю обработчик
    Код (Text):
    1. <select id="model" class="select"
    2. onchange="gate_('get_item_model.php',
    3.             '#item',
    4.                 $(this).val()
    5.            );" >
    'get_item_model.php' – возвращает список запчастей в виде табличных строк(<tr><td>деталь1</tr>)

    На странице соответсвенно :
    Код (Text):
    1. <table id= "item">  </table>
    Коллеги, интересует ваше мнение на предмет рациональности данного алгоритма с точки зрения профессионального php программирования. Возможно существует более оптимальное решение.
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    принимать обратно json и строить html на клиенте
     
  3. mutabor

    mutabor Активный пользователь

    С нами с:
    16 июн 2010
    Сообщения:
    5
    Симпатии:
    0
    да, согласен будет лучше.

    а какими способами можно избежать непосредственной привязки события "change" к <select>, если <select> строится динамически в асинхронном режиме. насколько знаю .live("change", function(){}) в IE не работает?
    благодарю!
     
  4. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
  5. mutabor

    mutabor Активный пользователь

    С нами с:
    16 июн 2010
    Сообщения:
    5
    Симпатии:
    0
    нашел решение с .live("change",...
    есть функция .delegate(), возможно вы уже её знаете.
    планирую её использовать так:
    Код (Text):
    1.   $('body').delegate("#model","change", function() { ... });
    .delegate() это тоже самое что .live(), только лучше (отслеживает появление новых объектов и вешает на них обработчик). скорей всего работает во всех популярных броузерах.