1

うまく機能しているnestedSortableと呼ばれる素晴らしいjqueryプラグインを見つけました。あとは、データベースを新しいソート順で更新するだけです。私はPHPを使用しています。

これは私が混乱しているところです。提供されている例では、出力を取得するための 3 つの方法があります。シリアル化、階層、および配列。

出力を POST 経由で処理するために PHP に送信できるように、javascript を変更するにはどうすればよいですか?

私はプラグイン フォーラム全体を読み、この正確な機能を望んでいた誰かから保存機能の形で希望の光を見つけました. 残念ながら、それは BYOgetItemIdFromElement($element)であり、プラグインの開発者は、彼の配列関数がよりクリーンなコードでまったく同じことをしたと言いました...

誰かがこれを理解するのを手伝ってくれれば、本当に感謝しています!

ティム

4

2 に答える 2

7

私自身も問題を経験しました。フォーラムには、フォームを介してリストを保存するためのソリューションが投稿されています (フォーム ソリューション)。個人的には 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 インジェクションなどをチェックするため)。例で提供されている追加の関数は必要ないので、削除することもできます。JavaScript の POST URL を変更することを忘れないでください ;) 頑張ってください!

于 2011-07-06T18:36:29.610 に答える
0

.ajax( ) を使用してシリアル化されたデータを PHP スクリプトに送信し、データ型として POST を指定できます。

フォームに非表示の値を入力して送信することもできますが、それは汚いようです。

于 2011-03-12T04:09:07.430 に答える