0

jQueryのソート可能ファイルを使用してテーブル内の行を単純に並べ替えようとしています。ドラッグアンドドロップは正常に機能しています。問題は、ajax呼び出しの新しい行の順序を保存すること、特にCakePHPのアクションにデータを送信することです。私は一日中さまざまなことを検索して試しましたが、役に立ちませんでした。基本的に、DBを更新するものは何もありません。

空のアクションでajax呼び出しを実行すると、成功を得ることができます。コールバックで何かを警告します。これは、アクションが正常にヒットしたことを意味すると理解しています。私が間違っている場合は訂正してください。これが私のjQueryとAJAXの呼び出しです:

$('#featured-items tbody').sortable({

    cursor: 'move',
    stop:function(i) {

        $.ajax({
            type: "GET",
            url: "/admin/features/reorder",
            data: $('#featured-items tbody').sortable("serialize"),
            success: function() {
                alert($('#featured-items tbody').sortable("serialize"));
            }               
        });

    }

}).disableSelection();

そして、私が送信している私のデータは次のとおりです。

item[]=2&item[]=1&item[]=24

誰かがコントローラーアクションで私のデータにアクセスする方法を理解するのを手伝ってもらえますか?これまでのところ、私はこれを持っています(これの他の例を見てから)。Cake 1.3を使用していて、モデルの名前はFeatureです。

function admin_reorder()
{
    $this->autoRender = false;

    if($this->RequestHandler->isAjax())
    {
        foreach($this->data['item'] as $order => $id)
            $this->Feature->id = $id;
            $this->Feature->saveField('priority', $order);
    }
}
4

2 に答える 2

1

$this->data の代わりに $_GET/$_POST を使用してみてください:

function admin_reorder()
{
    $this->autoRender = false;

    if($this->RequestHandler->isAjax())
    {
        foreach($_GET['item'] as $order => $id)
            $this->Feature->id = $id;
            $this->Feature->saveField('priority', $order);
        }
    }

}
于 2012-08-20T07:54:42.513 に答える
0

私の知る$this->data限り、投稿されたデータのみが対象ですが、AJAX 呼び出しではGETメソッドを使用しています。メソッドを POST に変更してみてください。

$('#featured-items tbody').sortable({

    cursor: 'move',
    stop:function(i) {

        $.ajax({
            type: "POST",
            url: "/admin/features/reorder",
            data: $('#featured-items tbody').sortable("serialize"),
            success: function() {
                alert($('#featured-items tbody').sortable("serialize"));
            }               
        });

    }

}).disableSelection();
于 2012-08-16T22:18:25.077 に答える