0

チェック ボックス ID の配列をコントローラのアクションにポストしようとしています。私のindex.ctpからのスクリプトは次のとおりです。

<script type="text/javascript">
$('.editSel_dialog').click(function()
{
    var selected = [];
    alert('Edit Selected Has Been Clicked');

    $("#[id*=LocalClocks]").each(function()
        {
        if(false != $(this).is(':checked'))
        {
            selected.push($(this).attr('id').replace('LocalClocks', ''));
        }
    });
    alert(selected);
    /*$.ajax(
    {
        type: 'POST',
        url: "/LocalClocks/editSelected/",
        data: selected,
        traditional: true,
        //contentType: "application/json",
        dataType: "text",
        success: function(data){ alert(data); alert('Edit Success');}
    });*/
    $.post('/LocalClocks/editSelected', { "Session" : selected }, function(data){
                   alert(data);
    });
});
</script>

ajax リクエストと投稿リクエストの両方があります。投稿が実際にphp変数を変更できることがわかるまで、私はajaxを使用していました。中括弧内のコードは、{ "Session" : selected }選択した配列でセッション変数を変更する必要があります。

、 、 、$this->dataおよびでdebug を使用してみましたが、すべて空です。$this->request->data$_POST

選択した配列を変数などに書き込むのに助けが必要です。に書き込もうと思っていたのですが、どうしたらいいの$this->Sessionかわかりません。

前もって感謝します

4

2 に答える 2

2

Cake では、ポストされた値を に取得するには$this->request->data、それらの名前の前に を付ける必要がありますdata

Javascript:

$.post('/LocalClocks/editSelected', { "data[Session][selected]" : selected }, function(data){
               alert(data);
});

コントローラ:

function editSelected()
{
  if($this->request->is('post'))
  {
    if(isset($this->request->data['Session']['selected']))
    {
      $this->Session->write('selected', $this->request->data['Session']['selected']);
    }
  }
}
于 2012-06-27T06:33:49.780 に答える
1

私が間違っているかもしれませんが、ajax を使用してクライアント側から直接行うことはできないと思います。php 変数を変更できることに関する声明のソースを共有できますか? 私は運がなかったのでそれをグーグルで検索しました.PHPセッションを変更できるのは奇妙です..セッション固定/インジェクションまたはその他の悪意のある手法を使用できると言って、それは本当に安全ではありません.

編集済み

必要な既存の変数に値を割り当てるために

ajax 呼び出しを行う

$.post('/LocalClocks/editSelected', { "selected" : selected }, function(data){
                   alert(data);
    });

コントローラーには、次のような関数があります

function editSelected($selected){
$_SESSION["selected"] = $selected;
}

そして出来上がり

于 2012-06-26T19:00:59.987 に答える