Список сортировки Jqueryui с обновлением ajax - PullRequest
7 голосов
/ 23 октября 2011

Я использую CodeIgniter с виджетом jQuery UI Sortable, чтобы изменить положение моего списка меню.

Например, если мой список меню такой:

<li>menu 1</li>
<li>menu 2</li>
<li>menu 3</li>
<li>menu 4</li>

Я хочу разместить первое меню под вторым и оставить его там.

Однако я немного застрял на jQuery.

Вот что получает список элементов:

 <ul id="sortable"> 
    <?php  foreach ($rows as $r)
    {
        echo '
        <li id="sort_'.$r->pid.'" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span> 
            ' . $r->page_name . '
        </li>';
    }

    ?>
</ul>

и jquery:

$( "#sortable" ).sortable({
    placeholder: "ui-state-highlight",
    opacity: 0.6,
    update: function(event, ui) {
        var info = $(this).sortable("serialize");
        alert(info);
    }
});
$( "#sortable" ).disableSelection(); 

Мне удалось предупредить массив результатов.

Теперь я не хочу, чтобы кто-нибудь писал это для меня, просто намек на то, как использовать ajax с этим для обновления.

Ответы [ 2 ]

4 голосов
/ 23 октября 2011

Я думаю, что вы можете использовать $ .ajax (..) внутри вашего метода обновления.

http://api.jquery.com/jQuery.ajax/

$.ajax({
  url: "submit.php",
  data: info,
  context: document.body,
  success: function(){
    // success
  }
});

Я просто проверяю, что информация уже сериализована, так что это должно работать,Вы можете добавить method свойство в зависимости от типа отправки (post, get).

3 голосов
/ 01 ноября 2011

Прежде всего спасибо Камилю Лаху за подсказку, мне удалось это сделать

Вот мой код, может быть, кто-то может его использовать

создал функцию в моем контроллере и загрузил в нее модель

function sort_items()
{
    $this->load->model("admin/pages_model");
    $this->pages_model->sort_insert();
}

модель

function sort_insert()
{
    foreach($this->input->post("sort")  as $p => $id)
    {
        $this->db->query(" UPDATE c_pages SET sort = ".$p." WHERE pid = ".$id." ");

    }   

}

переменная $ p - это короткая позиция, а идентификатор - это идентификатор меню

и jquery

$( "#sortable" ).sortable({
        placeholder: "ui-state-highlight",
        opacity: 0.6,
    update: function(event, ui) {
        var info = $(this).sortable("serialize");
        $.ajax({
            type: "POST",
            url: "http://localhost/frame/admin/pages/sort_items",
            data: info,
            context: document.body,
            success: function(){
                // alert("cool");
            }
      });

    }
    });
    $( "#sortable" ).disableSelection();

Я передал URL в функцию контроллера, куда загружается моя обновленная модель

и просмотр файла

<?php  if($rows) { ?>
    <ul id="sortable">  
        <?php  foreach ($rows as $r)
        {
            echo '
            <li id="sort_'.$r->pid.'" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span> 
                ' . $r->page_name . '
            </li>';
        }

        ?>

    </ul>
    <?php } else
    {
        echo "There are no pages created yet";
    } 

     ?>

И еще раз спасибо за подсказку Камил Лах

...