我正在尝试将一组复选框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请求和一个post请求。我正在使用ajax,直到我看到帖子实际上可以修改php变量。大括号{ "Session" : selected }
中的代码应该使用所选的数组修改Session变量。
我尝试在$this->data
,$this->request->data
和$_POST
上使用调试,但它们都是空的。
我需要帮助将所选数组写入变量或其他内容。我在考虑写信给$this->Session
,但我不确定我会怎么做。
提前致谢
答案 0 :(得分: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']);
}
}
}
答案 1 :(得分:1)
也许我错了,但我认为你不能直接从客户端使用ajax这样做。你可以分享你的声明来源你可以修改php变量吗?我用Google搜索没有运气,我能够修改PHP会话会很奇怪..它会非常不安全,说你可以使用Session Fixation / Injection或其他恶意技术
被修改
要为现有变量分配值,需要
进行ajax调用
$.post('/LocalClocks/editSelected', { "selected" : selected }, function(data){
alert(data);
});
在您的控制器上,您将拥有类似这样的功能
function editSelected($selected){
$_SESSION["selected"] = $selected;
}
和瞧