Нужна помощь в получении вывода из nestedSortable jQuery - PullRequest
1 голос
/ 09 марта 2011

Я нашел фантастический плагин jquery под названием nestedSortable , который прекрасно работает. Теперь все, что мне нужно сделать, это обновить мою базу данных с новым порядком сортировки. Я использую PHP.

Здесь я запутался. В приведенном примере есть три способа получения результата. Сериализация, иерархия и массив.

Как я могу изменить javascript, чтобы разрешить мне отправлять вывод в PHP для обработки через POST?

Я прочитал весь форум плагинов и нашел проблеск надежды в форме функции сохранения от кого-то, кто хотел именно эту функцию. К сожалению, это был BYO getItemIdFromElement($element), и разработчик плагина сказал, что его функция массива сделала то же самое с чистым кодом ...

Я надеюсь и буду очень признателен, если кто-нибудь сможет помочь мне понять это!

Тим

Ответы [ 2 ]

7 голосов
/ 06 июля 2011

Я тоже столкнулся с проблемой. На форуме размещено решение для сохранения списка через форму ( Форма решения ). Лично я предпочитаю AJAX, поэтому я написал свое собственное решение. Чтобы решить вашу проблему AJAX, вам нужно изменить код следующим образом:

Изменение:

    $('ol.sortable').nestedSortable({
        disableNesting: 'no-nest',
        forcePlaceholderSize: true,
        handle: 'div',
        helper: 'clone',
        items: 'li',
        maxLevels: 3,
        opacity: .6,
        placeholder: 'placeholder',
        revert: 250,
        tabSize: 25,
        tolerance: 'pointer',
        toleranceElement: '> div'
    });

В

$('ol.sortable').nestedSortable({
    disableNesting: 'no-nest',
    forcePlaceholderSize: true,
    handle: 'div',
    helper: 'clone',
    items: 'li',
    maxLevels: 3,
    opacity: .6,
    placeholder: 'placeholder',
    revert: 250,
    tabSize: 25,
    tolerance: 'pointer',
    toleranceElement: '> div',
    update: function () {
        list = $(this).nestedSortable('toHierarchy', {startDepthCount: 0});
        $.post(
            'http://www.domainname.com/ajax/ajax.php',
            { update_sql: 'ok', list: list },
            function(data){
                $("#result").hide().html(data).fadeIn('slow')
            },
            "html"
        );
    }
});

Затем вам нужно создать страницу ajax.php, где вы обрабатываете данные:

<? if (!empty($_REQUEST["list"]) && !empty($_REQUEST["update_sql"])) {

if ($_REQUEST["update_sql"] = 'ok') {

    if (!empty($_REQUEST["list"])) {
        $list = $_REQUEST["list"];
        foreach ($list as $key => $value) {

            mysql_query("UPDATE categories SET order = '" . $key . "' WHERE id = '" . $value['id'] . "'");

        }
        echo '<span class="success">Successfully updated.</span>';
    }
} } ?>

PHP-код может быть улучшен (для проверки инъекций MySQL и т. Д.). Вы также можете удалить дополнительные функции, представленные в примере, так как они вам не нужны. Не забудьте изменить POST URL в JavaScript;) Удачи!

0 голосов
/ 12 марта 2011

Вы можете использовать .ajax () для отправки сериализованных данных в ваш PHP-скрипт и указать POST в качестве типа данных.

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

...