lyq410670 发表于 2014-8-13 19:40:40

CI的ajax问题,接收不到post过来的数据

在view中写了个ajax,post到一个控制器中,但是在控制器中无法接收到数据,请见代码
view中的ajax:
<script language="javascript">
$(document).ready(function(){
        $('#addtocart').click(function(){
                var datatrans= new Array();
                datatrans=$('#goods_id').val();               
                datatrans=$('#goods_name').val();
                datatrans=$('#goods_img').val();
                datatrans=$('#goods_price').val();
                datatrans=$('#buyer_id').val();
                datatrans=$('#goods_num').val();
                //alert(datatrans);此处测试证明datatrans 数组是已经取到了页面的值的;
                $.ajax({
                        url: "<?php echo site_url('flow/addtocart')?>",
                        type: "POST",
                        dataType: "json",
                        async:false,//表示只有ajax执行完毕了才继续往下执行
                        data: {goods:datatrans},       
                                error: function(){
                                        alert('Error loading XML document');
                                },       
                                success: function(data,status) {       
                                        alert(data);
                                }
                });       
        })


})
</script>


控制器flow.php中接收数据的方法代码:
public function addtocart(){
        echo $this->input->post('goods');
}


代码如上,执行后报错,弹出ajax的alert('Error loading XML document');错误,我如果把echo $this->input->post('goods');改成echo $this->input->post('goods');则不报错,但是弹出的null,就是执行成功了,但是数据返回是空的,也就是控制器没接收到数据,请各位大神指导下,我迷茫了,ci是不是有现成的ajax使用方法,请指教

wuweizi55 发表于 2014-8-14 15:47:00

把error打出來看看?

                        error: function(XMLHttpRequest, textStatus, errorThrown) {
                                alert(XMLHttpRequest.status);
                                alert(XMLHttpRequest.readyState);
                                alert(textStatus);
                        },

似月光 发表于 2014-8-22 09:45:57

最大的问题 应该出在你穿的参数 不能是一个数组,“如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 "&foo=bar1&foo=bar2"。
” 这是jquery手册里面的话

wuweizi55 发表于 2014-8-14 15:54:31

控制器返回中沒有加上json_encode,

public function addtocart(){
      $ret = $this->input->post('goods');
      echo json_encode($ret );
}

lyq410670 发表于 2014-8-13 20:25:35

请大神指点啊,都不会吗,是因为我传的数据带特殊字符吗

iomect 发表于 2014-8-14 13:43:44

json_encode
数组怎么可能echo出来呢~~

Altair 发表于 2014-8-14 14:28:10

http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=19183 用 kint自己调试看下 不做 伸手党

wuweizi55 发表于 2014-8-14 15:51:47

data: {goods:datatrans},這個沒寫錯?
改成data: datatrans看看。

另外 將dataType: "json",這樣可以避免解析joson的錯誤,等找到錯誤再加回去。

lyt8384 发表于 2014-8-20 10:14:25

data: {goods:datatrans},
改为
data: {goods[]:datatrans},
你要传递数组,要么现编码了。要么就传成数组了

M-IN-CHINA 发表于 2014-8-20 11:02:23

貌似数组不能这样传递的吧{:soso_e136:}
页: [1] 2
查看完整版本: CI的ajax问题,接收不到post过来的数据