За последние 24 часа нас посетили 18003 программиста и 1673 робота. Сейчас ищут 1130 программистов ...

Связь между двумя плагинами jQuery через AJAX

Тема в разделе "JavaScript и AJAX", создана пользователем code_x, 15 май 2009.

  1. code_x

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

    С нами с:
    15 май 2009
    Сообщения:
    7
    Симпатии:
    0
    Здравствуйте уважаемые.

    Задача состоит в следующем:
    - есть два плагина jQuery (FlexiGrid и Datapicker)
    - выбирая число на Datapicker-е, происходит запрос БД по дате. Вывод данных во FlexiGrid.

    Перечитав кучу статей, понял суть работы с аяксом, но в итоге маленько запутался ))

    Сделал так:

    В скрипте вида:
    PHP:
    1.  
    2. $("#datepicker").datepicker({
    3.                 dateFormat: 'yy-mm-dd',
    4.                 onSelect: function(dateText)
    5.                 {
    6.                     $.ajax({
    7.                        type: "POST",
    8.                        dataType: "json",
    9.                        url: "post.php",
    10.                        data: "pl_date="+dateText,
    11.                        success: function(data){
    12.                             $("#flex1").flexReload();
    13.                        }
    14.                        
    15.                     });
    16.                 }
    17.             });
    18.  
    19.             $("#flex1").flexigrid({
    20.                 url: 'post.php',
    21.                 dataType: 'json',
    22.                 colModel : [ ////////// и т.д.  
    23.  
    24.  
    post.php

    PHP:
    1.  
    2. ....
    3. $pl_date = "'".$_POST['pl_date']."'";
    4.  
    5. $sql = "
    6. SELECT *
    7. FROM playlist_info
    8. WHERE playlist_info.date = $pl_date";
    9.  
    10. $result = mysql_query($sql);
    11.  
    12. $json = "";
    13. $json .= "{\n";                            
    14. $json .= "pl_date: $pl_date,\n";   
    15. ....
    16.  
    17.  
    Результат при нажатие(выборе) даты на календаре: ничего не происходит! ))) Т.е. данные не отображаются в датагриде. При чем, дата, указанная на календаре, возвращется с данными json. Если в "post.php" $pl_date присвоить значение в ручную, например $pl_date ="'2009-05-01'" то естественно, в датагрид выводятся данные только за эту дату.

    Понимаю что делаю что то не правильно :) Подскажите пожалуйста, как это сделать? )))
     
  2. Cron

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

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Вставляйте в $.ajax error() и complete() и начинайте отладку ;)
    Откуда ваш #flex1 узнает про данные для вставки (которые после успешного выполнения аякс запроса содержаться в data)?
     
  3. code_x

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

    С нами с:
    15 май 2009
    Сообщения:
    7
    Симпатии:
    0
    Вообще уже запутался, не могу понять, как связать данные вида:
    Код (Text):
    1. { pl_date: $pl_date, page: $page, total: $total, rows: [ { id:'date', cell:['date', 'airtime', 'artist', 'title', 'time', 'location', 'filename', ]}]}
    через эту функцию:

    [js]success: function(data){
    $.each(data.items, function(i,item){

    }[/js]

    Что бы во #flex1 получилось так (после вызова .html()):
    HTML:
    1. <TBODY><TR id="row2009-05-13"><TD align="center">
    2. <DIV style="text-align: center; width: 60px">2009-05-13</DIV></TD>
    3. <TD align="left"><DIV style="text-align: left; width: 45px">09:00:00</DIV></TD>
    4. <TD align="left"><DIV style="text-align: left; width: 150px"> </DIV></TD>
    5. <TD align="left"><DIV style="text-align: left; width: 150px"> </DIV></TD>
    6. <TD align="left"><DIV style="text-align: left; width: 45px">00:00:00</DIV></TD>
    7. <TD align="left"><DIV style="text-align: left; width: 250px">\\Radio92\air (m)\[JINGLES]\</DIV></TD>
    8. <TD align="left"><DIV style="text-align: left; width: 250px">hour-1.wav</DIV></TD></TR></TBODY>
    Данные возвращаются точно.