0

CakePHPアクションに変数の配列を投稿して、それらを編集できるようにしようとしています。配列は、テーブル行のIDから構築されます。これが私のindex.ctpファイルにあるjavascriptコードです。

<script type="text/javascript">
$('.edit_selected').click(function()
{
    var selected = new Array();
    alert('Edit Selected Has Been Clicked');
    $("#[id*=LocalClocks]").each(function()
    {
        if(false != $(this).is(':checked'))
        {
            selected.push($(this).attr('id').replace('LocalClocks', ''));
            $.ajax({
            type: 'POST',
            url: "/localhost/LocalClocks/editSelected/",
            data: JSON.stringify(selected),
            dataType: "json",
            success: function(data){ alert(data); alert('Edit Success'); }
            });
        }
    });
});
</script>

ここで行っているのは、で始まるすべてのIDを取得'LocalClocks'し、'LocalClock'文字列を削除して数値のみになるようにし、そのID番号を選択した配列に追加することです。この配列を関数に投稿したいと思いeditSelected()ます。

私はデータの投稿にまったく慣れていないので、いくつか質問があります。私が今まで持っている現在のコードは正しいですか?私のeditSelected()関数の場合、渡そうとしている配列のパラメーターが必要ですか、それとも投稿されたデータが入れられ$this->request->dataますか?

これが私のeditSelected行動です:

public function editSelected()
{
    $this->set('isEditSelValid', false);
    $this->set('editSelValidationErrors', false);
    if ($this->request->is('post'))
    {
        $localClocksEntries = $this->LocalClock->find('all');
        foreach($localClocksEntries as $LocalClock)
        {
            $this->LocalClock->id = $LocalClock['LocalClock']['id'];
            $this->LocalClock->save($this->request->data);
            $this->set('isEditSelValid', true);
            $this->set('editSelValidationErrors', false);
        }
    }
}

データを投稿しようとしている理由は、編集する行のIDを取得できる必要があるためです。上記のJavaScriptが取得して配列に入れることができるチェックボックスが各行にあります。その配列をループして、ユーザー入力をそれらに保存できるようにする必要があります。

4

1 に答える 1

1

サーバー側のコードが JSON を受け入れる場合は、メソッドcontentType: "application/json"に渡されるリテラル オブジェクトに追加する必要があります。ajax現在、デフォルトで送信されていますapplication/x-www-form-urlencoded。それ以外は、コードは健全に見えます。

datatType戻りデータに使用され、contentTypeリクエストデータが渡される方法です。

于 2012-06-25T17:11:50.163 に答える