2

我对蛋糕比较陌生,我正在努力使用我制作的自定义过滤器,以便根据选中的复选框显示产品。复选框根据用户在后端创建的属性填充,然后我将所选框的所有值收集到带有 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));
     }
  }

这是我得到未定义变量的视图代码:find_tags

foreach($find_tags as $all_tag)
  {
  echo $all_tag['Product']['name'];
  echo '</br>';
  }

任何帮助或建议将不胜感激现在已经为此苦苦挣扎了一段时间

4

1 回答 1

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));
  }
于 2013-08-23T21:15:52.737 回答