我对蛋糕比较陌生,我正在努力使用自定义过滤器,以便根据勾选的复选框显示产品。根据用户在后端创建的属性填充复选框,然后我使用javascript将所选框的所有值收集到一个数组中并将其发布到控制器,但由于某种原因,我无法访问名为'$的控制器变量find_tags'在我看来,它通过未定义的变量。 这是我的javascript和ajax,它正确地收集和发布(当我在我的控制器中的'数据'时,我的数据库中有'数据'即时发布)这样就好了
$("#clickme").click(function(event){
event.preventDefault();
var searchIDs = $("#checkboxes input:checkbox:checked").map(function(){
return $(this).val();
}).get();
var contentType = "application/x-www-form-urlencoded";
var data = 'data[ID]='+searchIDs;
$.post("",data,function(data){
console.log(data);
});
});
这是我的控制器代码,我假设是故障所在
if ($this->request->is('post') ) {
$data = $this->request->data['ID'];
$find_tags = array();
$selected_tags = $data;
foreach($selected_tags as $tag)
{
array_push($find_tags,$this->Product->findByTag($tag));
$this->set('find_tags', _($find_tags));
}
}
这是我的视图代码,我得到Undefined变量:find_tags
foreach($find_tags as $all_tag)
{
echo $all_tag['Product']['name'];
echo '</br>';
}
真的很感激任何帮助或建议一直在努力解决这个问题
答案 0 :(得分:1)
如果searchIDs
是id数组,你只需要制作数组的json然后发送给你的控制器
$("#clickme").click(function(event){
event.preventDefault();
var searchIDs = $("#checkboxes input:checkbox:checked").map(function(){
return $(this).val();
}).get();
var contentType = "application/x-www-form-urlencoded";
var data = 'ids='+JSON.stringify(searchIDs);
$.post("controller url",data,function(data){
console.log(data);
});
});
在php方面你得到了错误的变量
if ($this->request->is('post') ) {
$data = $this->request->data['ids'];
$find_tags = array();
$selected_tags = $data;
foreach($selected_tags as $tag)
{
array_push($find_tags,$this->Product->findByTag($tag));
}
$this->set('find_tags', _($find_tags));
}