对Cakephp Controller的Ajax POST总是给出array()结果

时间:2016-05-27 03:08:33

标签: php jquery ajax cakephp

我真的很难在控制器中获得POST值。我真的很擅长这个......请有人分享我的一些亮点......现在在黑暗中长时间玩耍。 我有一个复选框,需要将已检查的所有ID传递给控制器​​,并使用该ID更新我的数据库。我不知道我做错了什么,尝试了一切和一些例子在这里:  sending data via ajax in Cakephp

也发现了一些关于同一问题的问题,但对我的帮助不大(或者可能太愚蠢无法理解)。我一直得到array();

请帮助我...我的代码或我可以参考的任何链接。我的代码: 我的观点脚本:

['3,1,3', '3,1,3', '3,1,3', '3,3,3', '3,1,1'] 

我的控制员:

<script type="text/javascript">
$(document).ready(function(){
  $('.checkall:button').toggle(function(){
    $('input:checkbox').attr('checked','checked');

    $('#button').click( function (event) {  

      var memoData = [];
      $.each($("input[name='memo']:checked"), function(){            
        memoData.push($(this).val());
      });
      var value = memoData.join(", ")
      //alert("value are: " + value);  

      //start
      $.ajax({
        type:"POST", 
        traditional:true;
        data:{value_to_send:data_to_send}, 
        url:"../My/deleteAll/",
        success : function(data) {
        alert(value);// will alert "ok"

     },
     error : function() {
       alert("false submission fail");
     }
     });
      //end

      } ); //end of button click
  },function(){//uncheck
    $('input:checkbox').removeAttr('checked');


  });

}); 

以及此调试的结果是:

public function deleteAll(){
if( $this->request->is('POST') ) {
 // echo $_POST['value_to_send'];
 //echo   $value = $this->request->data('value_to_send');

 //or 
    debug($this->request->data);exit;

}

}

请帮助我。非常感谢你

2 个答案:

答案 0 :(得分:1)

这个怎么样:

Jquery的:

$(document).ready(function() {

    $('.checkall:button').toggle(function() {

        $('input:checkbox').attr('checked','checked');

        $('#button').click(function(event) {  

            var memoData = [];

            $.each($("input[name='memo']:checked"), function(){            
                memoData.push($(this).val());
            });

            //start
            $.ajax({
                type: 'POST', 
                url: '../My/deleteAll/',
                data: {value_to_send: memoData}, 

                success : function(data) {
                    alert(data);// will alert "ok"

                },
                error : function() {
                    alert("false submission fail");
                }
            });//end ajax

        }); //end of button click

    },function(){//uncheck

        $('input:checkbox').removeAttr('checked');

    });

}); 

在控制器中:

public function deleteAll()
{
    $this->autoRender = false;      

    if($this->request->is('Ajax')) { //<!-- Ajax Detection

        $elements = explode(",", $_POST['value_to_send']);

        foreach($elements as $element)
        {
            //find and delete
        }

    }
}

答案 1 :(得分:0)

您需要在ajax调用中将数据类型设置为json

JQUERY CODE:

$.ajax({
  url: "../My/deleteAll/",
  type: "POST",
  dataType:'json',
  data:{value_to_send:data_to_send}, 
  success: function(data){

  }
});