apiCloud中的ajax方法,可以自动处理跨域访问数据,不必使用jsonp来处理了。
使用ajax方法,必须要在apiready = function() {}方法中
获取参数
var pageParam = api.pageParam;var goods_id = JSON.stringify(pageParam.goods_id);
ajax获取数据,可以传参数
// 获取商品相关信息 api.ajax({ url: 'http://zhudianbao.yunlutong.com/?g=Api&m=Goods&a=getGoodsInfo', method: 'get', data: { values: { goods_id: goods_id } } }, function(json, err) { // 一些处理... });
由于跨域只能异步处理,必须把处理的代码写在ajax里面
if (json.status == '1') { var interText = doT.template($("#goodstmpl").text()); $("#info_area").html(interText(json.info)); var swiper = new Swiper('.swiper-container', { pagination: '.swiper-pagination', paginationClickable: true, spaceBetween: 30, centeredSlides: true, autoplay: 3500, autoplayDisableOnInteraction: false }); } else { var toast = new auiToast(); toast.fail({ title:json.msg, duration:2000 }); }
服务器端的一些处理
// 获取商品信息 public function getGoodsInfo() { $goods_id = $this->_request('goods_id','trim'); $goodsModel = D('Goods'); $goodsImgModel = D('Goods_img'); $goods_info = $goodsModel->getGoodsById($goods_id); if ($goods_info) { $goods_info['goods_img'] = $goodsImgModel->getGoodsImg($goods_id); } if (empty($goods_info)) { $this->outData['status'] = '2'; $this->outData['msg'] = '商品不存在或已下线'; } else { $this->outData['status'] = '1'; $this->outData['msg'] = '获取成功'; $this->outData['info'] = $goods_info; } $this->printOut(); } protected function printOut() { exit(json_encode($this->outData)); }
小结
这里的服务器只需要正常的返回json数据就可以了。不必加入jsonp的处理了。