使用ajax将数组发布到cakePHP中的控制器

时间:2013-08-23 21:03:20

标签: php javascript jquery ajax cakephp

我对蛋糕比较陌生,我正在努力使用自定义过滤器,以便根据勾选的复选框显示产品。根据用户在后端创建的属性填充复选框,然后我使用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>';
  }

真的很感激任何帮助或建议一直在努力解决这个问题

1 个答案:

答案 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));
  }