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使用方法,请指教
把error打出來看看?
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
最大的问题 应该出在你穿的参数 不能是一个数组,“如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 "&foo=bar1&foo=bar2"。
” 这是jquery手册里面的话 控制器返回中沒有加上json_encode,
public function addtocart(){
$ret = $this->input->post('goods');
echo json_encode($ret );
}
请大神指点啊,都不会吗,是因为我传的数据带特殊字符吗 json_encode
数组怎么可能echo出来呢~~ http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=19183 用 kint自己调试看下 不做 伸手党 data: {goods:datatrans},這個沒寫錯?
改成data: datatrans看看。
另外 將dataType: "json",這樣可以避免解析joson的錯誤,等找到錯誤再加回去。 data: {goods:datatrans},
改为
data: {goods[]:datatrans},
你要传递数组,要么现编码了。要么就传成数组了 貌似数组不能这样传递的吧{:soso_e136:}
页:
[1]
2