2012-06-26 33 views
0

我正在嘗試在控制器中發佈一個複選框ID數組。這裏是我的index.ctp腳本:使用PostPHP寫入會話CakePHP

<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請求和發佈請求。我一直在使用ajax,直到我看到該帖子實際上可以修改一個php變量。大括號{ "Session" : selected }中的代碼應該使用所選陣列修改Session變量。

我試過在$this->data$this->request->data$_POST上使用調試,但它們都是空的。

我需要幫助獲取選定的數組寫入一個變量或東西。我正在考慮寫信給$this->Session,但我不確定我會如何去做。

在此先感謝

+0

使用螢火蟲並查看哪些數據正在發送到服務器。嘗試顯示或返回$ this-> request-> params alert()顯示什麼?它是一個數組,對嗎? – Mo3z

回答

2

蛋糕,把被公佈值$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']); 
    } 
    } 
} 
+0

非常感謝你們的幫助。這工作,我能夠成功發佈數據。再次感謝。 – RXC

+0

不客氣:-) – nIcO

1

也許我錯了,但我想用ajax,你不能從客戶端直接做到這一點。你可以分享你的聲明有關你可以修改php變量的來源嗎?我用Google搜索與沒有運氣,這將是怪我能修改PHP會議..這將是非常不安全的,說你可以使用會話固定/注塑或其他惡意技術

編輯

有關在現有的變量分配值,你需要

發出Ajax調用

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

和控制器上你有一個像這樣

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

+0

這是我從那裏得到的鏈接:[stackoverflow answer](http://stackoverflow.com/a/3995907/1438009)。海報表示,大括號中的內容將如何改變php變量的值。我的問題是我嘗試修改會話,但沒有運氣。我想能夠寫入數組中的數據,但我不知道該怎麼做。 – RXC

+1

哦,我明白了..聲明是真實的,你***接受***指定變量的值,而不是修改***現有的值。你可以做的就是接收這個變量,然後在PHP上將它分配給你想要的$ _SESSION變量 – pollirrata

+0

愚蠢的問題,但我會怎麼做。我是否會在控制器的操作中創建一個新變量,然後將其分配給會話? – RXC