常用有四种请求方式,get,put,post,delete
但是他们的传参的形式是不同,
1.get
get传参都是以附在URL后面传递的,举个栗子
goodsExchange_url: function(goodsId,staffId) {
return"/a/o/goodsExchange?goodsId="+goodsId+"&staffId="+staffId;
},
$rootScope.portService.goodsExchange($stateParams.goodsId,50)
.then(
functionsuccessCallback(data1) {
bootbox.alert(data1.data.message)
}
);
这里面的goodsIdhe staffId都是形参,用x,y替代也是可以的,他俩代表的是$stateParams.goodsId和50这两个实参,但是写的时候一定要注意顺序,因为形参就是占位符,是占个位置,弄乱了传参就乱了;
当然,他还能用params:data;的形式,其实也是讲data里面的数据序列化为上面的格式;
举个栗子
goodsDetail_url: function() {
return"/a/o/goodsDetail";
},
goodsDetail: function(data) {
return $http.get(address.goodsDetail_url(), {params:data});
},
$rootScope.portService.goodsDetail({goodsId:$stateParams.goodsId,staffId:50})
.then(
functionsuccessCallback(data1) {
vm.data=data1.data.data;
console.log(vm.data)
},
functionerrorCallback(response) {
}
);
这里就传了两个参数进去goodsId和staffId,是以对象的方式写入,然后被pramas序列化为一串字符串;
上面既然用到了$stateparams,就想说一下另外一点:
URL传参:想要用URL传参,一般是使用get请求方式,请求参数附在URL后面,最主要的是在配置路由的时候,路由地址后面也要写上参数名。
forexample:
//企业员工列表
.state('field.employeeLists', {
url: '/employeeLists/:size/:page/:name/:phone/:departmentName/:positionName',
templateUrl: 'views/organizationalStructure/employeeLists.html',
controller: 'employeeListsCtrl',
controllerAs: 'vm',
resolve: {
loadMyFile: _lazyLoad([
'js/controllers/organizationalStructure/employeeLists.js'
])
}
})
只有在路由里面也写上了参数名,才能在在这页面里面使用$stateParams将URL里面的参数读取出来,而且刷新之后也不会失效
2.put,post
有两种传参形式,
第一种就是像get一样附在URL后面
"/a/o/goodsExchange?goodsId="+goodsId+"&staffId="+staffId;
第二种是以application/json的形式传递,还是举个栗子
goodsAdd: function(data) {
return$http.post(address.goodsAdd_url(),data);
},
vm.publish=function(data){
$rootScope.publishConfirm($rootScope.portService.goodsAdd,data);
};
data里面包含的就是一组json对象
3.突然想起还有一种形式
是直接参与以URL地址的形式发送,与附在URL后面又不同;
还是举例子实际:
exchangeLogDetail_url: function(id) {
return"/a/o/exchangeLog/"+id;
},
exchangeLogDetail: function(id) {
return$http.get(address.exchangeLogDetail_url(id));
},
这种一般只传一个id进去
网友评论