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的處理了。
